最近我在设计一个《品质管理系统》,要涉及到数据库的设计,因此我使用了PowerDesigner 10作为建立概念数据模型与物理数据模型的工具。
在设计过程中,发现实体关系中的依赖关系较难把握,所以在这里我想把所学的有关依赖关系的知识与经验,与大家分享,以飨初学之者。
依赖(Dependency)表示在联系中一个实体的存在是否依赖于另一个实体。寄生实体(Dependent Entity)是一种部分地被另一实体确定的实体。
在依赖联系中,一个实体与另一实体通过标识符相联系,当一个实体的存在没有另一个实体的存在作为参考就不能唯一确定时,两个实体间就存在依赖联系。
依赖联系用一个三角形表示,三角形的顶点指向非寄生实体。图1表示了定单(Order)依赖于商店(Store)的依赖联系。
定单和书店间存在一种依赖联系,一个定单必须来自于一个特定的商店。依赖联系的三角形顶点指向书店实体。对寄生实体定单来说,这种联系是强制的,但对非寄生实体书店来说,这种联系是可选的。
- 一个书店可以有一个或多个定单;
- 一个定单必须来自于一个书店,而且只能是一个书店;
- 每个定单由定单号与书店唯一确定。
反映在实际的数据表中,即导出物理数据模型如图2:
在表Order中,Store ID与Order Number共同标识一个定单。
递归联系:当一个实体的实例之间存在自身联系时,就产生了递归或反身联系。图3中职工之间的递归联系反映了职工之间的一种管理关系。
- 一个职工可以领导零个或多个职工;
- 一个职工必须受一个职工的领导。
反映在实际的数据表,即导出物理数据模型如图4:
在表Employee中,有两个employee id属性,但这两个属性是不同的,employee id是强制的,而Emp_employee id是非强制的。