关于PowerDesigner中的各种表间关系的区别
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关于PowerDesigner中的各种表间关系的区别在PowerDesigner中,定义的表间关系的图标有三种,分别是:
除此之外,还有一种单个表之间的关系——自反(Reflexive),Reflexive 使用Relationship图标,实际上可以理解成:数据库表的关系,有4种。
为说明表间关系的所有情况,我创建了一个CDM文件,用于说明各种情况之间的区别。
一Relationship,关系
先说最常见的Relationship,关系。
1 一对多
一对多是最常见、使用得最多的情况。
图中,专业和学生的关系,就是一对
多的关系:
一个学生必然属于一个班级;一个班级必然有很多学生。
先看属性页面:
Cardinalities页面,是设置Ralationship、Inheritance的共同页面。
跟一对多相关的是:
1.1“一”端的Mandatory(强制)
“一”端是没有Dependent依赖的。
在一对多关系中“一”的这端,选中和不选中,在创建数据库的SQL语句中,没有任何区别,但是,他表示的逻辑是不同的:
1) 选中Mandatory,表示“一”端的每一条记录(班级),都至少有一个
“多”端的记录(学生)对应,即,一个班级至少要有一名学生;
2) 不选中Mandatory,表示,一个班级,可以是空班级,可以没有学生(比
如招生前夕),也可以有多个学生。
1.2“多”端的Mandatory(强制)
Mandatory选项,对一对多关系中“多”的这端,选中和不选中的区别是:
1) 创建的SQL语句:选中了,表示“多”端的表中的外键不能为空;没
选中,表示“多”端的表中的外键可以为空;
2) 举例:选中了,学生必须属于某个班级;没选中,表示学生可以暂时不
属于任何一个班级(比如降级还没有分班的学生)。
1.3“多”端的Dependent(依赖)
Dependent(依赖)选项,对一对多关系中“多”的这端,选中和不选中,区别如下:
1) SQL语句:选中,“多”端的外键跟自己的主键一起成为主键;否则,
外键只是外键,生成的逻辑模型图是:
不选中
2) 举例:选中Dependent,表示:班级的ID传递给学生之后,既是学生
表的外键,又跟学生表的学号一起构成学生表的主键;如果没有选中,
那班级的ID传递给学生表,仅仅作为学生表的外键。
2 多对多
多对多的Dependent和Mandatory的意思,跟一对多的意思是一样的。
所
不同的是,多对多的关系,会在生成物理模型的时候,自动生成一张表,原表和
新表之间是两个一对多的关系。
比如:学生和老师的关系,概念模型是:
生成物理模型之后,就是:
3 一对一
一对一的表间关系,很容易跟继承、关联混淆。
一对一的Relationship ,最重要的选项是“Dominant (支配)”,A “支配”B ,表示:A 的主键传递给B ,但是B 的主键不传递给A ;
如果不选择“Dominant ”,表示,A 的主键要传递给B ,并且,B 的主键也要传递给A 。
对于一对一中的Mandatory 和Dependent ,跟一对多的情况一样。
二 Inheritance ,继承
所谓继承,看本文开头部分举的例子,教师和学生都有共同的字段——姓名、性别、年龄——教师和学生都是“人”,他们的属性是从“人”继承来的。
Powerdesigner 的继承关系,专门有一个图标,,将两张表设计成“继
承”关系,其连线是
,跟Relationship 不一样。
在概念模型中,子表没有主表的字段,生成物理模型之后,主表的全部字段全部复制到子表中。
师生关系
工号班级号学号char(256)numeric numeric <pk,fk1><pk><pk,fk2>
三Association,关联
Association关系,就是两个实体之间的多对多关系,一般这种情况下会增加一个中间实体,这就是前面“Relationship”中的“一对多”。
此外,在Power Designer中,提供了一个专门的符号来对应,叫做“Association”关联,需要注意的是,“Association”只是为了方便直观地表示这种类型的实体而设置的一个图标,他其实还是实体。
使用一个普通的实体,定义多对多关系,和使用“Association”图标定义多对多关系,两者相比,使用“Association”更方便、直观,使模型更容易理解,并可以减少因不谨慎而可能导致的错误。
下面的是概念模型:
生成物理模型之后:
需要足以的是,针对Association,PowerDesigner专门提供了一个图标用于设置这种关系:
四Reflexive,自反
如上图中的领导。
领导本身是老师,每个老师都有一个领导。
这种关系就是自反关系。
这种关系下,Mandatory 、Dependent 的设置,跟一对多的Relationship 关系是一样的。
五 总结
一张表跟自己的关系,是Reflexive (自反);
一张表的主键和字段全部传递给另一张表,是Inheritance (继承); 一张表只把自己的主键传递给另一张表,是Relationship (关系)和Association (关联),其中,Relationship 可以是一对一、一对多、多对多;Association 只能是多对多;
Mandatory (强制)选项,选中了,表示:一张表的主键传递给另一张表,作为后者的外键,并且不能为空;
Dependent (依赖)选项,选中了,表示:一张表的主键传递给另一张表,作为后者的外键,并且不能为空;并且与它原来的主键,一起构成它的主键;
Dominant (支配)选项,只针对一对一的情况,选择A “支配”B ,表示:A 的主键传递给B ,但是B 的主键不传递给A ;如果不选择“Dominant ”,表示,A 的主键要传递给B ,并且,B 的主键也要传递给A 。
本文开始给出的概念模型,生成物理模型后,是下面的样子:
学生
家访
师生关系
工号
学生_工号班级号学号
char(256)char(256)numeric numeric
<pk,fk1><pk,fk2><pk,fk2><pk,fk2>
学生-俱乐部
俱乐部名称工号班级号学号
char(256)char(256)numeric numeric
<pk,fk1><pk,fk2><pk,fk2><pk,fk2>。