手机查违章软件哪个好,用哪个软件查好点

PowerDesigner软件怎么创建概念数据模型?
作者:佚名
字体:[ ] 来源:互联网 时间:12-29 16:31:53
PowerDesigner软件怎么创建概念数据模型?念数据模型就是讲抽象的东西实体化,但是该怎么建立念数据模型?下面我们来卡看PowerDesigner中创建概念数据模型的详细教程
本篇经验将介绍如何在PowerDesigner中创建概念数据模型。概念数据模型也称信息模型,它以实体-联系(Entity-RelationShip,简称E-R)理论为基础,并对这一理论进行了扩充。它从用户的观点出发对信息进行建模,主要用于数据库的概念级设计。
1、打开PowerDesigner,点击菜单&File&----&&New Model&,如下图所示:
2、点击【OK】按钮后,将进入如下的画面,如下图所示:
3、系统将出现一个工具栏如下,用于在设计面板中设计模型,如下图所示:
4、单击Entity图标,然后在主面板中单击一次便可添加一个实体,如下图所示:
5、切换回一般鼠标模式,双击已经添加的实体,弹出设置属性的对话框,如下图所示:
6、在General选项卡中可以设置实体的Name和Code等属性,如下图所示:Code是实体在数据库中的实际名称,一般用英文,Name是显示的名称,一般用中文,方便理解。
7、切换到Attributes选项卡可以添加实体的属性,如下图所示:
8、设置完成之后,如下图所示:
相关推荐:
大家感兴趣的内容
12345678910
最近更新的内容leizhimin 的BLOG
用户名:leizhimin
文章数:725
评论数:2706
注册日期:
阅读量:5863
阅读量:12276
阅读量:370504
阅读量:1064882
51CTO推荐博文
PowerDesigner概念模型详解
PowerDesigner 12.5
Windows XP 中文版
一、概念模型的重要性
PowerDeigner是最强大、最优秀的数据建模工具,是Sybase公司最伟大的产品。目前最新版本是12.5,从9一直用到现在,对PD的认识也是在逐步加深。
常常在工作中,看到大家用PD,都是用来建几个表,实际上是做PDM,上来就干这个,实际上,这么用PD,是对强悍的PD一种侮辱。PD仅仅是这么玩的吗?
数据库设计的步骤是什么,难道上来稍稍想一下就搞个pdm出来?
下面简单回顾下大学课本里讲述的数据库设计的基本步骤:&&&&&&& 1、需求分析从系统需求中寻找一些概念性名词,并甄选,并对这些名词相关属性做了解,这部分是人工的,PD做不了什么。2、概念结构设计针对甄选的名词进行分心,找出其中的关系(独立的、一对一、一对多、多对多、继承五种关系),并用E-R图描述出来,这是大学课本的做法。在PD中,这个过程可以用CDM(概念模型)来描述,PDM中实体概念模型表示方式比E-R更清晰,更好。3、逻辑结构设计实际上就是设计表的结构和表之间的主外关系等。这部分在PD中对应的是PDM(物理模型),而PD中的物理模型一般都是直接从概念模型生成的。也就是说,只要你做好概念模型,物理模型就可以自动生成。当然,这种生成结果一般都需要做一些调整和优化。4、物理结构设计有了PDM,数据库的物理设计将不费吹灰之力,直接可以从PDM导出各种数据库系统的建库脚本。5、数据库的建立和测试这个过程也很简单,看看建库脚本的执行就知道了。不合理了重新修改PDM,然后生成sql再来。6、数据库运行和维护。这个一般是DBA的事情了,比如时间长了,数据量大了,在某些列上加上索引,调优等等。
从中可以看到,一上来就建PDM,是不合理的。实际上要求对概念模型有个透彻理解了才去做PDM,这种理解可以不画图,但至少是心中有图。
做CDM概念模型的好处是交流容易,全世界通用,谁看了都明白。你难道能用PDM的外键关系去看数据关系吗,如果一个表上有多个外键,外键关联像蜘蛛网一样,就晕菜了,谁也看不明白!
二、&使用PD建立数据库概念模型
1、一对一CDM
下图描述了 一个系统用户对应一个扩展信息,也可以没有扩展信息。扩展信息依赖用户信息的存在。并且一个扩展信息只能有一个用户信息。
650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)' alt="" src="/attachment/427234.png" border="0" />
关系的设置:
650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)' alt="" src="/attachment/261062.png" border="0" />
将其生成PDM
650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)' alt="" src="/attachment/497234.png" border="0" />
2、一对多CDM
下图CDM描述了一个公司有多个经理的模型,当然一个公司也可以没有经理(老板是光杆司令)。但一个经理必须属于一个公司。
650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)' alt="" src="/attachment/861828.png" border="0" />
关系的设置:
650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)' alt="" src="/attachment/207453.png" border="0" />
650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)' alt="" src="/attachment/327140.png" border="0" />
3、多对多CDM
下面描述的是一个演员和角色的关系,一个演员可以演多个角色,一个角色可以由不同的演员来演,比如《红楼梦》的林妹妹,小时候找个演员A来演,长大后的形象由演员B来演。
650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)' alt="" src="/attachment/373968.png" border="0" />
关系设置,多对多关系最简单了,一般不需要设置:
650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)' alt="" src="/attachment/465812.png" border="0" />
生成的PDM如下:
650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)' alt="" src="/attachment/882109.png" border="0" />
4、继承关系CDM
下图描述的是一个继承关系,比如有一个教务系统,用户分学生老师,注册时候,老师和学生填写的信息由差异,但有公共信息。
650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)' alt="" src="/attachment/773375.png" border="0" />
关系配置,不需要,就集成关系,没啥好设置的。
生成的PDM如下:
650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)' alt="" src="/attachment/006000.png" border="0" />
也许你会发现,五个呢,怎么才四个,呵呵,单表就独立着和谁都没关系,还用画吗?
1、数据库建模是系统设计中最重要一步,概念模型能很好的描述数据间的关系,还可以从概念模型精确生成符合一定标准范式的物理模型。
2、CDM能描述出更细微的数据关系,比如是0-n还1-n,这直接影响到数据业务上的约束,但是用PDM无法描述。CDM为业务交流节约了沟通成本。
3、CDM也为后来了解底层业务数据关系提供了依据,尤其是表很多很多时候,如果没有CDM,那只有设计数据库的人知道底层的关系了。
4、如果表很多,分模块的情况,还可以讲CDM分包来管理,这样可以避免将所有的实体关系画到一张图中所带来阅读上烦恼。
5、PD还有其他很多很强悍的功能,比如数据库反响到PDM,PDM导出脚本,PDM导出Java模型对象、XML模型。还可以生成DAO层的持久化代码,甚至hbm文件,还可以做业务流程建模、生成数据字典报表等等。但PD最擅长的就是CDM--&PDM--&SQL,数据库反向工程,报表功能,用好这些就不错了。
&本文出自 “” 博客,转载请与作者联系!
了这篇文章
附件下载:  
类别:┆阅读(0)┆评论(0)
00:41:14 08:27:51 08:28:29 14:49:14 17:22:06 11:48:05 08:44:49 14:07:37 23:35:21
请输入验证码:xiaoliuxian 的BLOG
用户名:xiaoliuxian
文章数:70
访问量:287440
注册日期:
阅读量:5863
阅读量:12276
阅读量:370504
阅读量:1064882
[匿名]dear2170:
51CTO推荐博文
1.如何打开PowerDesigner 快捷工具栏 paletteTools(工具栏)--& customsize toolbars(自定义工具栏)--&勾选 palette(调色板)
2. 自定义外键命名规则&& Database (工具栏)―&Edit Current DBMS& 选择Scripts-》Objects-》Reference-》ConstName可以发现右侧的Value为:FK_%.U8:CHILD%_%.U9:REFR%_%.U8:PARENT%该命名方法是:'FK_'+8位子表名+9位Reference名+8位父表名,你可以根据这中模式自定义为:FK_%.U7:CHILD%_RELATIONS_%.U7:PARENT%,可以使FK名称变为FK_TABLE_2_RELATIONS_TABLE_1;
3)在PDM 中添加外键&& Model(工具栏) -& References新建一条外键后,双击进入外键属性,在“Joins”卡片中可以选择子表的外键字段
4. 实现在CDM中创建Entity时,设置Name和Code不自动对应:&& 设置tools--Gerneral options---&dialog----&name to code mirroring (不勾选)
5. POWERDESIGEN 自增长列的设置(仅针对ORACLE)&& PDM里查看表的属性,Columns选项卡,选中整列,点左上方的properties图标查看列属性,此时打开一个设置窗口,General选项卡里最底行Sequence 进行设置.点击后面的创建序列选框,弹出设置序列的属性框,设置好Physical Options (common) 确认设置即可.
6.使用PowerDesigner检查数据库设计错误& PowerDesigner 还可用于快速检测新模型中的数据库设计错误。检查新的模式:从 [Tools] 菜单中选择 [Check Model]。此时,就会出现 [Check Model Parameters] 对话框。可以使用缺省参数。另外也可以直接在空白处单击右键,选择Check Model...即可此时,在 [Result List] 中就会显示 [Check Model] 的结果。
7.如何将Conceptual Data Model (CDM)转换成Physical Data Model(PDM)即将概念数据模型转换成物理数据模型。&& 二者的区别是,CDM是纯粹概念上的模型,PDM是和具体的数据库类型相关的。生成SQL语句当然也就需要从PDM生成。在菜单上选择Tools -& Generate Phisical Data Model& 选择你的数据库类型,即可。
8.使用PowerDesigner生成SQL语句&& 可以使用PowerDesigner 生成一个 SQL 脚本,该脚本用于实施模型的所有组件。然后,使用 SQL 脚本生成一个数据库,这时候要确保你用的是PDM。生成 SQL 脚本以新建数据库:从 [Database] 菜单中选择 [Generate Database]。此时,就会出现 [Database Generation] 对话框在 [Directory] :字段设置导出文件存放目录,并在 [File Name]: 字段导出数据文件名。Generation type :选中你将要导入的数据库类型. 点击确认,将生成导出脚本,如果提示错误,将不会生成SQL导出文件.
9.为什么出现Warning : table Existence of index 表名&& 说明该表没有建立索引。不过这是一个警告,不是错误,可以不用理会它。
10.如何建立联合主键&& 联合主键就是一个表里面有多个主键,比如一份学生选课的表里面,学生ID和课程ID就同时是主键。在表设置Attributes,把2个字段的P那项都勾上,P表示Primary Key主键。
11.如何在 CDM里建立外键Foreign Key&& 在PowerDesigner中,通过建立关系Relationship就可以自动建立外键,不需要手动添加。而建立Relationship有2种办法:可以通过菜单选择Model -& Relationships...,也可以通过在右边的工具栏中拖拽Relationship控件。
12.如何生成数据字典&& 通过菜单Report -& Report Wizard...可以生成
13.除去建库SQL表头注释&& 在PDM中 选中Databse (工具栏) -& Generate Database (Ctrl+G)窗口中,选择Format卡片,去掉Usage的Title钩选项即可。
14.生成的建表脚本中如何把对象的双引号去掉&& 打开cdm的情况下,进入Tools-Model Options-Naming Convention,把Name和Code的标签的Charcter case选项设置成Uppercase或者Lowercase,只要不是Mixed Case就行!或者选择Database-&Edit current database-&Script-&Sql-&Format,有一项CaseSensitivityUsingQuote,它的 comment为“Determines if the case sensitivity for identifiers is managed using double quotes”,表示是否适用双引号来规定标识符的大小写,可以看到右边的values默认值为“YES”,改为“No”即可!或者在打开pdm的情况下,进入Tools-Model Options-Naming Convention,把Name和Code的标签的Charcter case选项设置成Uppercase就可以!
15.PowerDesigner去掉SQL脚本中的双引号& Database(工具栏) → Edit Current DBMS → General → Script → Sql → Format → CaseSensitivityUsingQuote设置为NO即可
16. 如何在PowerDesigner下建索引&& 双击表设计图,出来Table Properties,在Tab 页中选择 Indexes--& 单击新建索引的属性,出现Indexex Properties增加一个索引包含的字段
17. 在PowerDesigner 下检查设计模型&& Tools(工具栏) --& Check Model& 选择要检查的每项设置,确定后,将出来检查结果汇总信息
18. 由pdm生成建表脚本时,字段超过15字符就发生错误(oracle)&& 打开PDM后,会出现Database的菜单栏,进入Database - Edit Current DBMS -script-objects-column-maxlen,把value值调大(原为30),比如改成60。出现表或者其它对象的长度也有这种错误的话都可以选择对应的objects照此种方法更改本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)软件开发(15)
原文出处:
一、概念数据模型概述
&&& 概念数据模型也称信息模型,它以实体-联系(Entity-RelationShip,简称E-R)理论为基础,并对这一理论进行了扩充。它从用户的观点出发对信息进行建模,主要用于数据库的概念级设计。
&&& 通常人们先将现实世界抽象为概念世界,然后再将概念世界转为机器世界。换句话说,就是先将现实世界中的客观对象抽象为实体(Entity)和联系 (Relationship),它并不依赖于具体的计算机系统或某个DBMS系统,这种模型就是我们所说的CDM;然后再将CDM转换为计算机上某个 DBMS所支持的数据模型,这样的模型就是物理数据模型,即PDM。
&&& CDM是一组严格定义的模型元素的集合,这些模型元素精确地描述了系统的静态特性、动态特性以及完整性约束条件等,其中包括了数据结构、数据操作和完整性约束三部分。
1)数据结构表达为实体和属性;
2)数据操作表达为实体中的记录的插入、删除、修改、查询等操作;
3)完整性约束表达为数据的自身完整性约束(如数据类型、检查、规则等)和数据间的参照完整性约束(如联系、继承联系等);
二、实体、属性及标识符的定义
&&& 实体(Entity),也称为实例,对应现实世界中可区别于其他对象的“事件”或“事物”。例如,学校中的每个学生,医院中的每个手术。每个实体都有用来描述实体特征的一组性质,称之为属性,一个实体由若干个属性来描述。如学生实体可由学号、姓名、性别、出生年月、所在系别、入学年份等属性组成。
&&& 实体集(Entity Set)是具体相同类型及相同性质实体的集合。例如学校所有学生的集合可定义为“学生”实体集,“学生”实体集中的每个实体均具有学号、姓名、性别、出生年月、所在系别、入学年份等性质。
&&& 实体类型(Entity Type)是实体集中每个实体所具有的共同性质的集合,例如“患者”实体类型为:患者{门诊号,姓名,性别,年龄,身份证号.............}。实体是实体类型的一个实例,在含义明确的情况下,实体、实体类型通常互换使用。实体类型中的每个实体包含唯一标识它的一个或一组属性,这些属性称为实体类型的标识符(Identifier),如“学号”是学生实体类型的标识符,“姓名”、“出生日期”、“信址”共同组成“公民”实体类型的标识符。有些实体类型可以有几组属性充当标识符,选定其中一组属性作为实体类型的主标识符,其他的作为次标识符。
三、实体、属性及标识符的表达
四、新建概念数据模型
1)选择File--&New,弹出如图所示对话框,选择CDM模型(即概念数据模型)建立模型。
2)完成概念数据模型的创建。以下图示,对当前的工作空间进行简单介绍。(以后再更详细说明)
3)选择新增的CDM模型,右击,在弹出的菜单中选择“Properties”属性项,弹出如图所示对话框。在“General”标签里可以输入所建模型的名称、代码、描述、创建者、版本以及默认的图表等等信息。在“Notes”标签里可以输入相关描述及说明信息。当然再有更多的标签,可以点击 &More&&&按钮,这里就不再进行详细解释。
五、定义实体
1、创建实体
1)在CDM的图形窗口中,单击工具选项版上的Entity工具,再单击图形窗口的空白处,在单击的位置就出现一个实体符号。点击Pointer工具或右击鼠标,释放Entitiy工具。如图所示
2)双击刚创建的实体符号,打开下列图标窗口,在此窗口“General”标签中可以输入实体的名称、代码、描述等信息。
Name:是用来在模型中标识一个实体,一般用于模型在界面中的显示(这个可以通过更改选项设置进行改变)。在一个模型当中,实体的名字不能重复。
Code:在模型转化时一般作为对象的物理名称,比如把实体属性的Code转化为数据库中的列名,当然我们现在不必为了这个实体将来叫什么而费神,一般采取与Name一致即可。
Generate:默认是选择状态,如果取消,则在转化为其他模型时,会忽略这个实体。
2、添加实体属性
1)在上述窗口的“Attribute”选项标签上可以添加属性,如下图所示。
数据项中的“添加属性”和“重用已有数据项”这两项功能与模型中Data Item的Unique code 和Allow reuse选项有关。
P列表示该属性是否为主标识符;D列表示该属性是否在图形窗口中显示;M列表示该属性是否为强制的,即该列是否为空值。
如果一个实体属性为强制的,那么, 这个属性在每条记录中都必须被赋值,不能为空。
按“Crtl+U”呼出“定制列过滤器”的窗口,可以根据自己的喜好和实际需要选择那些列出现在窗口中,那些隐藏。使用快捷键 “Crtl+E”可以允许或者禁止当前过滤器。
2)在上图所示窗口中,点击插入属性按钮,弹出属性对话框,如下图所示。
3、定义属性的检查约束
1)定义属性的标准检查
标准检查约束是一组确保属性有效的表达式。在实体属性的特性窗口,打开如图所示的检查选项卡。
在这个选项卡可以定义属性的标准检查约束,窗口中每项的参数的含义,如下
属性可接受的最小数
属性可接受的最大数
属性不赋值时,系统提供的默认值
单位,如公里、吨、元
属性的数据显示格式
属性的赋值全部变为小写字母
属性的赋值全部变为大写字母
Cannot modify
该属性一旦赋值不能再修改
List Of Values
属性赋值列表,除列表中的值,不能有其他的值
属性列表值的标签
2)定义属性的附加检查
当Standard checks 或Rules 不能满足检查的要求时,可以在Additional Checks选项卡的Server子页上,通过SQL语句中使用%MINMAX%、%LISTVAL%、%RULES%、%UPPER%、%LOWER% 几个变量来定义Standard和Rule,如图所示
%MINMAX%、%LISTVAL%、%UPPER%、%LOWER%
在Standard Check中定义的Minimum 和Maximum、List values 、uppervalues、lowervalues
在Rules特性窗口Expression选项卡中定义的有效性规则表达式
六、标识符
&&& 标识符是实体中一个或多个属性的集合,可用来唯一标识实体中的一个实例。要强调的是,CDM中的标识符等价于PDM中的主键或候选键。每个实体都必须至少有一个标识符。如果实体只有一个标识符,则它为实体的主标识符。如果实体有多个标识符,则其中一个被指定为主标识符,其余的标识符就是次标识符了。
1、定义主、次标识符
1)选择某个实体双击弹出实体的属性对话框。在Identifiers选项卡上可以进行实体标识符的定义。如下图所示
2)选择第一行“主标识符”,点击属性按钮或双击第一行“主标识符”,弹出属性对话框,如图所示
3)选择&Attributes&选项卡,再点击“Add Attributes”工具,弹出如图所示窗口,选择某个属性作为标识符就行了。
七、数据项
数据项(Data Item)是信息存储的最小单位,它可以附加在实体上作为实体的属性。
注意:模型中允许存在没有附加至任何实体上的数据项。
1、新建数据项
1)使用“Model”---& Data Items 菜单,在打开的窗口中显示已有的数据项的列表,点击 “Add a Row”按钮,创建一个新数据项,如图所示
2)当然您可以继续设置具体数据项的Code、DataType、Length等等信息。这里就不再详细说明了。
2、数据项的唯一性代码选项和重用选项
使用Tools---&Model Options-&Model Settings。在Data Item组框中定义数据项的唯一性代码选项(Unique Code)与重用选项(Allow Reuse)。
如果选择Unique Code复选框 ,每个数据项在同一个命名空间有唯一的代码,而选择Allow reuse ,一个数据项可以充当多个实体的属性。
3、在实体中添加数据项
1)双击一个实体符号,打开该实体的属性窗口。
2)单击Attributes选项卡,打开如下图所示窗口
Add a DataItem 与 Reuse a DataItem的区别在于
Add a DataItem 情况下,选择一个已经存在的数据项,系统会自动复制所选择的数据项。如果您设置了UniqueCode选项,那系统在复制过程中,新数据项的Code会自动生成一个唯一的号码,否则与所选择的数据项完全一致。
Reuse a DataItem情况下,只引用不新增,就是引用那些已经存在的数据项,作为新实体的数据项。
&&& 联系(Relationship)是指实体集这间或实体集内部实例之间的连接。
&&& 实体之间可以通过联系来相互关联。与实体和实体集对应,联系也可以分为联系和联系集,联系集是实体集之间的联系,联系是实体之间的联系,联系是具有方向性的。联系和联系集在含义明确的情况之下均可称为联系。
&&& 按照实体类型中实例之间的数量对应关系,通常可将联系分为4类,即一对一(ONE&TO ONE)联系、一对多(ONE TO MANY)联系、多对一(MANY TO ONE)联系和多对多联系(MANY TO MANY)。
1、&建立联系
在CDM工具选项板中除了公共的工具外,还包括如下图所示的其它对象产生工具。
&在图形窗口中创建两个实体后,单击“实体间建立联系”工具,单击一个实体,在按下鼠标左键的同时把光标拖至别一个实体上并释放鼠标左键,这样就在两个实体间创建了联系,右键单击图形窗口,释放Relationship工具。如下图所示
在两个实体间建立了联系后,双击联系线,打开联系特性窗口,如图所示。
2、&四种基本的联系
即一对一(ONE&TO ONE)联系、一对多(ONE TO MANY)联系、多对一(MANY TO ONE)联系和多对多联系(MANY TO MANY)。如图所示
3、&其他几类特殊联系
除了4种基本的联系之外,实体集与实体集之间还存在标定联系(Identify Relationship)、非标定联系(Non-Identify RelationShip)和递归联系(Recursive Relationship)。
标定联系:
每个实体类型都有自己的标识符,如果两个实体集之间发生联系,其中一个实体类型的标识符进入另一个实体类型并与该实体类型中的标识符共同组成其标识符时,这种联系则称为标定联系,也叫依赖联系。反之称为非标定联系,也叫非依赖联系。
在非标定联系中,一个实体集中的部分实例依赖于另一个实例集中的实例,在这种依赖联系中,每个实体必须至少有一个标识符。而在标定联系中,一个实体集中的全部实例完全依赖于另个实体集中的实例,在这种依赖联系中一个实体必须至少有一个标识符,而另一个实体却可以没有自己的标识符。没有标识符的实体用它所依赖的实体的标识符作为自己的标识符。
换句话来理解,在标定联系中,一个实体(选课)依赖 一个实体(学生),那么(学生)实体必须至少有一个标识符,而(选课)实体可以没有自己的标识符,没有标标识符的实体可以用实体(学生)的标识符作为自己的标识符。
&递归联系:
递归联系是实体集内部实例之间的一种联系,通常形象地称为自反联系。同一实体类型中不同实体集之间的联系也称为递归联系。
例如:在“职工”实体集中存在很多的职工,这些职工之间必须存在一种领导与被领导的关系。又如“学生”实体信中的实体包含“班长”子实体集与“普通学生”子实体集,这两个子实体集之间的联系就是一种递归联系。创建递归联系时,只需要单击“实体间建立联系”工具从实体的一部分拖至该实体的别一个部分即可。如图
3、&定义联系的特性
双击关系(Relationship)的符号,进入关系的属性页,在Detail项目中,我们可以对两个实体的关系进行详细的定义,如下图:
General 项目
一般最好为关系取一个贴切的名字,本例的业务关系描述如下:一个部门有多个员工,我们使用“Has”作为这个关系的名字。
同样的我们也可以描述为:多个员工属于一个部门,可不可以使用“Belong to”作为关系名字呢?一般不推荐这样做,在概念图中有一个约定,关系的名字采用从“1,n”中“1”所在的方向向“n”所在一方进行读取的语义。本例即 “1”在部门一方,从部门一方向雇员一方读取语义,即:部门有(Has)多个员工。
Detail 项目
假定对于实体部门(Department)和雇员(Employee),具有如下关系:
一个部门可以有多个雇员,新成立的部门也可以暂时没有任何雇员;
一个雇员必须属于一个部门,并且同时只能属于一个部门;
根据以上关系,我们修改属性页,部门-雇员的方向采用默认的0,n,雇员-部门的方向修改为强制约束(Mandatory),或者从下拉框中选择“1,1”,如下图:
最后定义完成的关系(Relationship)在概念图中表示如下:
注:在Power Designer中,关系符号靠近实体端的一个“横线”代表强制性约束,“空心圆圈”代表无强制约束,即这一方可以无对象关联;“非分岔”线代表为“1” 的关系,“分岔”线代表“多”的关系。以上四个符号共可以组合出16种关系(包含反向)。其中“多对多”的关系一般通过给出一个中间实体来进行分解,所以在许多概念图中,是看不到实际的“多对多”的关系存在的。
另外在关系的属性中还有两项:Dominant role 和Dependent,可以表示更复杂的关系,会在后面讲到。
使用依赖关系(Dependent)
还是使用上面的例子,我们假定这样的业务描述:雇员享有假期,雇员每次休假,需要记录雇员休假的起始日与结束日,假期以天为单位,一个雇员和一个开始日唯一确定一个假期。根据这个业务描述,我们知道,对于假期而言,其必须依存于实体“Employee”而存在,即一个休假,必定有一个主体雇员。我们在上一个模型的基础之上,添加一个实体,名称是“Holiday”,定义假期的属性开始日与结束日,这里并不需要重复定义一个雇员编号,而是替代的,使用依赖关系,来表示实体“Holiday”依赖于实体“Employee”,关系定义如下图:
在实体“Holiday”中,我们需要设置开始日为主键标识符,开始日与其依赖实体中的雇员编号一起作为实体“Holiday”的标识符,用来唯一确定一个假期。这种依赖关系在概念图中表现如下:
从途中可以看出,在实体“Holiday”一端多了一个朝外的三角▲箭头,这个含义就是这个实体“的依赖于三角箭头所指的另外一个实体,在转化出来的物理模型当中,实体“Employee”的empNo,在Holiday实体中不仅会作为一个外键,还同时会作为主键出现(与startData一起作为复合主键)。
使用Dominant role
当两个实体之间的关系是1..1 时(尽管这种关系比较少见,常见于面向对象的设计方法当中,依赖实体中的主键通常与外健重合),你需要明确指定这两个实体,哪一个是父实体,哪一个是依赖实体,否则,系统在由概念模型转化为物理模型时,将不能确定需要在哪一端生成外键,这时就需要用到“Dominant role”选项,这个选项只有在1..1 的关系中才允许进行设置。我们假定这样的业务描述,企业中的部分雇员拥有一个系统帐号,并且是唯一的一个帐号,这些雇员需要保存一些额外的信息,比如帐号名称、密码等等。我们添加了一个新的实体“User”,其与雇员之间为1..1
的关系,由于一个用户帐号必定属于一个雇员,而一个雇员则可能没有用户帐号,所以我们定义实体“Employee”支配实体“User”。同时,由于 “User”依赖于“Employee”而存在,所以再定义一个由前者到后者的依赖关系,如下图:
Dominant role 选项中,箭头所指的实体为被支配的实体,即作为依赖实体。在模型图中,支配实体的一方会出现一个用圆括号括起来的大写字母“D”。
转化出来的物理模型中,表User中,empNo作为单独的主键,同时也是引用Employee表的一个外键。
处理多对多(n..n)的关系
在概念模型中,一般很少看见两个实体之间是直接的n..n 的关系,一般这种情况下我们会增加一个中间实体,在Power Designer中,提供了一个专门的符号来对应,叫做“Association”。请考虑以下的情形:
企业中拥有帐号的雇员在系统中具有不同的操作权限,这通过用户角色来进行管理,权限已经分配给了多个不同的角色,一个用户帐号至少属于一个角色,并且可能会同时属于多个角色,一个角色可以包含0个或多个用户帐号。根据以上描述,我们添加一个实体“Role”,它与实体“User”之间是n..n 的关系,为了表达这种关系,我们增加一个“Association”并分别使用“Association
Link”与其他两个实体建立关系,表示如下:
使用一个普通的实体,合理定义关系,并选择“Dependent”选项,是可以替代“Association”的,但使用 “Association”更方便、直观,使模型更容易理解,并可以减少因不谨慎而可能导致的错误。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:236995次
积分:2421
积分:2421
排名:第12218名
原创:22篇
转载:102篇
评论:13条
(1)(1)(1)(1)(2)(2)(2)(1)(2)(2)(3)(1)(5)(11)(13)(6)(1)(7)(18)(10)(6)(2)(4)(4)(6)(2)(1)(9)

我要回帖

更多关于 查违章软件哪个好 的文章

 

随机推荐