在PowerDesigner的概念模型中,实体之间的关系是非常重要的,也决定了从概念模型转化到物理模型时的表现形式,所以有必须深究其中的相关设置。做数据库重要的就是表与表之间的关系,而这个关系是连接所有数据库系统的纽带,所以即使我们不用PD,也应该重视表与表之间的关系。这也是关系型数据库的由来。
PD中的表与表之间的关系有四种,分别是one-one(一对一),one-many(一对多),many-one(多对一),many-many(多对多)。在实际中使用得最多的只有前面两种,而多对一和一对多其实没有什么区别,只是二者关系的反向描述,所以其可以看成是一种类型。而多对多在实际的数据库设计中也是时有出现的,这种情况下,我们一般不直接处理多对多的关系,而是通过一种技巧,将多对多转化为多对一,和一对多的关系,这样可以简化数据库关系的复杂性。将多对多转化为多对一,再一对多意思是通过提供一个关联关系表,来使多对多的关系表与该关联关系表发生关系,而不让其直接发生多对多的关系,这样就可以简化这样的关系。前面文章中已经说明如何创建这种关联表了。这里也就不再说多对多的关系。后面只重点说明一对一,一对多的关系。
在CDM中,实体之间的关系更符合现实情况一些,以一对多的关系来说,如果一个实体对应多个实体,通常含有“包含,拥有”等这样的意思在里面。比如一个部门拥有多个员工,一个企业拥有多个部门等。而如果多个实体对应一个实体,则通常含有“属于,包含于”等这样的意思。比如多个员工属于一个部门,多个部门包含于一个企业等。在PDM中就很具体了,且与实际的有些区别了,这主要是由于在软件的实现角度上的体现,比如一对多的关系,比如T1与T2的关系为T1一对多个T2,在PDM中,通常表现在T2中有一个外键,用来存储T1的主键,这样就叫一对多,而这样的表现与实际上具有一定的差别。当然这是没有什么问题的,因为PDM才是我们真正在软件实现时所采用的方式。我只是想说的是CDM中这种关系的描述,可能更和实际情况接近一些,也就更加容易明白一点。
好了,下面分别说明一下一对多和一对一的关系详细说明:
1.对于一对多的说明
当两个实体需要进行一对多的关联时(比如T1与T2的关系为T1一对多个T2,T1和T2为两个实体),我们通过