概念结构设计所得的E-R模型是对用户需求的一种抽象的表达形式,它独立于任何一种具体的数据模型,因而也不能为任何一个具体的DBMS所支持。为了能够建立起最终的物理系统,还需要将概念结构进一步转化为某一DBMS所支持的数据模型,然后根据逻辑设计的准则、数据的语义约束、规范化理论等对数据模型进行适当的调整和优化,形成合理的全局逻辑结构,并设计出用户子模式。这就是数据库逻辑设计所要完成的任务。
数据库逻辑结构的设计分为两个步骤:首先将概念设计所得的E-R图转换为关系模型;然后对关系模型进行优化,如图1.14所示。
图1.14 逻辑结构设计的过程
关系模型是由一组关系(二维表)的结合,而E-R模型则是由实体、实体的属性、实体间的关系三个要素组成。所以要将E-R模型转换为关系模型,就是将实体、属性和联系都要转换为相应的关系模型。下面具体介绍转换的规则。
1. 一个实体类型转换为一个关系模型
将每种实体类型转换为一个关系,实体的属性就是关系的属性,实体的关键字就是关系的关键字。例如,可将“学生”实体转换为一个关系模型,如图1.15所示。其中,带下划线的属性为主属性,该主属性为关系模型外键。
图1.15 一个实体类型转换为一个关系模型
2. 一对一关系(1:1)的转换
一对一关系有以下两种转换方式:
转换为一个独立的关系模型。联系名为关系模型名,与该联系相连的两个实体的关键字及联系本身的属性为关系模型的属性,其中每个实体的关键字均是该关系模型的候选键。
与任意一端的关系模型合并。可将相关的两个实体分别转换为两个关系,并在任意一个关系的属性中加入另一个关系的主关键字。
例如,若某工厂的每个仓库只配备了一名管理员,那么仓库实体与管理员实体间便为1:1关系。根据以上介绍的原则,可以进行如图1.16所示的变换。
图1.16 1:1关系的转换
在实际设计中究竟采用哪种方案可视具体的应用而定。如果经常要在查询仓库关系的同时查询此仓库管理员的信息,就可选用前一种关系模型,以减少查询时的连接操作。反之,如果在查询管理员时要频繁查询仓库信息,则选用后一种关系模型。总之,在模型转换出现较多方案时,效率是重要的取舍因素。
3. 一对多关系(1:n)的转换
一对多关系也有两种转换方式:
将1:n关系转换为一个独立的关系模型。联系名为关系模型名,与该联系相连的各实体的关键字及联系本身的属性为关系模型的属性,关系模型的关键字为n端实体的关键字。
将1:n联系与n端关系合并。1端的关键字及联系的属性并入n端的关系模型
即可。
在图1.17中,实体“专业”和“学生”之间的联系为1:n,则两者可使用以上的原则进行关系模型的转换。
图1.17 1:n 联系的转换
4. 多对多关系(m:n)的转换
关系模型名为关系名,与该关系相连的各实体的关键字及关系本身的属性为关系模型的属性,关系模型的关键字为关系中各实体关键字的并集。
例如,在学校中,一名学生可以选修多门课程,一门课程也可为多名学生选修,则实体“学生”与“课程”之间满足多对多的关系,其转换方法如图1.18所示。
图1.18 m:n关系的转换