在概念模型中主要有以下几个操作和设置的对象:实体(Entity)、实体属性 (Attribute)、实体标识(Identifiers)、关系(Relationship)、继承(Inheritance)、关联 (Association)、关联连接(Association Link)。

实体

  实体就是我们抽象出的对象,比如:一个选课系统中,学生、教师、班级、课程等等都是实体。实体属性就是一个实体中所包含的简单属性,比如学生实体,具有学 号、姓名、生日、性别等属性。另外实体还有个标识用于唯一的标识出每个实体实例,比如学生实体中就可用将学生的学号作为该实体的标识。标识可用是一个实体 属性也可以是多个属性的结合。在PD中新建一个新的概念模型,系统将出现一个工具栏如下,用于在设计面板中设计模型。

  单击Entity图标,然后在设计主面板中单击一次便可添加一个实体。再单击鼠标图标,即可切换回一般鼠标的模式。双击已经添加的实体,弹出实体属性设置对话框,在General中可以设置实体的Name和Code等属性,如图所示:

  切换到Attributes选项卡可以设置实体的属性Name、Code、DataType等,右边还有3个复选框,M表示不能为空,P表示是标识属性,D 表示在模型图中是否显示,如果在设置属性时直接选中StudentID的P复选框,系统将会自动生成该Student实体的一个Identifier。

  如果不希望系统自动生成而是手动设置的话,那么切换到Identifiers选项卡,添加一行Identifier,然后单击左上角的“属性”按钮,然后弹出的标识属性设置对话框中单击“添加行”按钮,选择该标识中使用的属性。例如将学号设置为学生实体的标识,具体操作如图所示:

  整个设置好的实体如图所示:

关系

  关系用于表示一个实体与另外一个实体之间的对应关系,分为一对一(1:1),一对多(1:n),多对一(n:1),多对多(m:n)4种对应关系,一对多和多对一其实就是方向相反,所以实际上就是一对一、一对多和多对多。

  最常用的就是一对多,比如班级实体和学生实体就是一对多关系,一个班级有多个学生,一个学生只会属于一个班级。在设计面板中添加一个Class实体,然后 单击工具栏的Relationship按钮,然后在Class实体上单击一下,再到Student上单击一下,就可以在Class和Student之间建 立一对多关系,如图:

  系统默认会给该关系一个命名Relationship_1,切换到鼠标指针模式,双击Relationship_1,即可打开关系的属性窗口,可以在General选项卡中修改该关系的Name、Code等,如图:

  切换到Cardinalities选项卡,上面可以修改是一对多还是多对多之类的关系,下面的Role name没有多大的意义,就是在模型中显示文字,多的一方有0,n和1,n两种,也就是说一个班级可以对应多个学生,那么一个班级中最少是没有学生还是要 至少存在一个学生,同样的一的一方有0,1和1,1两种,就是说一个学生是可以不属于任何班级呢还是必须属于某一个存在的班级,这里我们都选至少是1,所 以最终的设置界面如图:

  mandatory:表示的是强制关系,勾选上了之后会强制

继承

  在概念模型中的继承与在OO模型中的继承是一回事,就是要抽象出一个实体,其他实体继承该实体后就拥有该实体的属性。

  同样以选课系统为例,现在有学生实体,有教师实体,其他他们都是人,具有人的属性,所以我们可以抽象出一个人的实体,人具有性别、生日、名字等属性,教师具有职称、工号等属性这是学生没有的,所以不能放在人实体中,学生具有学号属性是教师没有的。

  这里只是概念模型,在DBMS中是没有继承这种说法的,所以在接下来的逻辑模型和物理模型中,系统就会将继承转换为实际的实体和表。这里只是概念模型,所以才有继承的说法。

关联(Association)我也不知道这个翻译成中文用哪个词比较好,就暂且用“关联”吧。

  Association也是一种实体间的连接,在Merise模型方法学理论中,Association是一种用于连接分别代表明确定义的对象的不同实体,这种连接仅仅通过另一个实体不能很明确地表达,而通过“事件(Event)”连接来表示。

  也就是说,实体和实体之间存在着关系(多对多),但是这种关系还存在其他的属性,这些属性如果如果作为一个明确的实体的实体来表示又不是很合适,所以就使用了Association来表达,这种关系之间一般是一个“事件”虚实体,也就是说是一个动词对应的实体。

  前面说的可能还是太抽象,以实际的例子来说明:现在有了学生实体,有课程实体,一个学生可以选择多门课程,一门课程有多个学生来上课,所以之间就存在一个“选课”的Association,其中记录了学生选课的时间、选课的状态:

  一 个学生会对应多个选课结果选择多门课程,一个课程对应多个选课学生选课,所以学生实体和课程实体与选课的关系都是一对多,添加关联连接,一门课程可能太枯 燥了,没有学生来选,所以课程对应选课可能是0,n,一个学生可能学分够了这学期一门课都不选,所以学生对应选课也可能是0,n的关系,所以我们最终形成 的概念模型如图所示:

  这就是一个完整的概念模型。接下来就是要根据概念模型生成逻辑模型或者物理模型。

Power Desginer系列02【转载】的更多相关文章

  1. Power Desginer系列03【转载】

    在PowerDesigner中设计物理模型1——表和主外键 在PD中建立物理模型由以下几种办法: 直接新建物理模型. 设计好概念模型,然后由概念模型生成物理模型. 设计好逻辑模型,然后由逻辑模型生成物 ...

  2. Power Desginer系列00【转载】

    绪论 Sybase PowerDesigner(简称PD)是最强大的数据库建模工具,市场占有率第一,功能也确实十分强大,现在最新版本是15.1,已经支持最新的SQL Server 2008等数据库,另 ...

  3. Power Desginer系列01【转摘】

    近期在做一个业务系统的分析和数据模型设计,工作这几年也做过好几个项目的数据库模型的设计,期间也算是积累了一定的经验吧,这次有机会就写写我的数据库模型设计过程与方法. 在 数据库设计中,设计的目标就是要 ...

  4. java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括InputStream)

    我们以ByteArrayInputStream,拉开对字节类型的“输入流”的学习序幕.本章,我们会先对ByteArrayInputStream进行介绍,然后深入了解一下它的源码,最后通过示例来掌握它的 ...

  5. Power Query系列 - 排序Ranking

    Power Query系列 - 排序Ranking 难度: ★★☆☆☆(1星) 适用范围: ★★★☆☆(3星) 概况: 在数据分析中,我们常常需要对数据进行排序,同时我们想知道某个项目或者产品的排名, ...

  6. 一起学微软Power BI系列-使用技巧(2)连接Excel数据源错误解决方法

    上一篇文章一起学微软Power BI系列-使用技巧(1)连接Oracle与Mysql数据库中,我们介绍了Power BI Desktop中连接Oracle和Mysql的方法,其实说到底还是驱动的问题, ...

  7. 一起学微软Power BI系列-官方文档-入门指南(1)Power BI初步介绍

    我们在前一篇文章微软新神器-Power BI,一个简单易用,还用得起的BI产品中,我们初步介绍了Power BI的基本知识.由于Power BI是去年开始微软新发布的一个产品,虽然已经可以企业级应用, ...

  8. 一起学微软Power BI系列-官方文档-入门指南(2)获取源数据

    我们在文章: 一起学微软Power BI系列-官方文档-入门指南(1)Power BI初步介绍中,我们介绍了官方入门文档的第一章.今天继续给大家介绍官方文档中,如何获取数据源的相关内容.虽然是英文,但 ...

  9. 一起学微软Power BI系列-官方文档-入门指南(3)Power BI建模

    我们前2篇文章:一起学微软Power BI系列-官方文档-入门指南(1)Power BI初步介绍 和一起学微软Power BI系列-官方文档-入门指南(2)获取源数据 中,我们介绍了官方入门文档与获取 ...

随机推荐

  1. DotNetOpenAuth实践系列

    写在前面 本人在研究DotNetOpenAuth的过程中,遇到很多问题,很多坑,花费了很多时间才调通这玩意,现在毫无保留的分享出来,希望博友们可以轻松的上手DotNetOpenAuth,减少爬坑时间. ...

  2. Python全栈开发之10、网络编程

    网络编程就是如何在程序中实现两台计算机的通信,而两台计算机间的通信其实就是两个进程间的通信,进程间的通信主要通过socket(套接字)来描述ip地址(主机)和端口(进程)来实现的,因此我们学习网络编程 ...

  3. Python之路【第二篇】: 列表、元组、字符串、字典、集合

    本文内容: -------------------------------------- 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表(list) 序列是Pyt ...

  4. 【BZOJ 2665】 2665: [cqoi2012]编号(暴力?)

    2665: [cqoi2012]编号 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 347  Solved: 217 Description 你需要给一 ...

  5. 【tarjan+拓扑】BZOJ3887-[Usaco2015 Jan]Grass Cownoisseur

    [题目大意] 给一个有向图,然后选一条路径起点终点都为1的路径出来,有一次机会可以沿某条边逆方向走,问最多有多少个点可以被经过?(一个点在路径中无论出现多少正整数次对答案的贡献均为1) [思路] 首先 ...

  6. bzoj 4874: 筐子放球

    4874: 筐子放球 Time Limit: 10 Sec  Memory Limit: 256 MB Description 小N最近在研究NP完全问题,小O看小N研究得热火朝天,便给他出了一道这样 ...

  7. [转]Android学习笔记:TabHost 和 FragmentTabHost

    TabHost 命名空间: android.widget.TabHost 初始化函数(必须在addTab之前调用): setup(); 包含两个子元素: 1.Tab标签容器TabWidget(@and ...

  8. img 边距的问题

    一.*{margin:0;padding:0} 不能消除img的边距 二.布局中可以使用以下方法: 1.img:{flot:left} 2.img:{vertical-align: top;}  im ...

  9. VS2012项目中使用CocoStudio相关文件的设置

    开发环境说明: win7  vs2012  coco2d-x 3.0 alpha1 cocos2d-x 3.0 alpha 1搭配CocoStudio使用,效果更佳.CocoStudio包含了游戏开发 ...

  10. require(): open_basedir restriction in effect. 解决方法

    在linux服务器部署thinkphp5的时候PHP报了这个错误, 如下: Warning: require(): open_basedir restriction in effect. File(/ ...