一、引言
如何将数据库概念结构设计的结果,即用E-R模型表示的概念模型转化为关系数据库模式。
E-R模型由实体、属性以及实体间的联系三个要素组成
将E-R模型转换为关系数据库模式,实际上就是要将实体及实体联系转换为相应的关系模式,转换应遵循相应的规则,并确定这些关系模式的主键及外键,利用外键来体现实体间的联系。最后,还要对转换后的关系模式进行优化
二、实体的转换
1、转换的规则是一个实体要单独转换为一个关系模式。实体的属性就是关系的属性,实体的关键字就是关系的主键。
2、举例:例如将一个学生实体转换为一个学生关系模式
(1)关系名为学生,包含学号、姓名、性别属性,学号为主键、
三、实体间联系的转换
1、根据实体间联系的类型,联系可单独转换为一个关系模式,也可不单独转换为一个关系模式
2、在转换后的关系模式中,应体现实体间的联系以及联系本身的属性
3、1:1联系的转换
假设班长被抽象为实体,而不是班级的属性,则班长和班级之间具有1:1的联系。对于1:1的联系,既可单独对应一关系模式,也可以不单独对应一关系模式
(1)若将该联系单独转换为一个关系模式
- 该关系的属性则由参与联系的各实体的关键字以及该联系本身的属性构成
- 每个实体的关键字均可作为该关系的主键
- 且每个实体的关键字均为该关系模式的外键
则班级和班长之间1:1的联系可转换为一个关系模式,可命名为负责人,具有班级号和学号两个属性,均可作为该关系的主键,均为该关系的外键,分别对应班级关系的主键班级号和班长关系的主键学号
(2)如果联系不对应一关系模式
- 可将联系合并到与该联系相关的任意一端实体所对应的关系模式中,需要再被合并的关系模式中,增加联系本身的属性以及与联系相关的另一实体的关键字
- 新增属性后,原关系模式的主键不变
- 增加的另一端实体的关键字为该关系模式的外键
对于班长和班级之间的1:1联系,则可在班级关系模式中,增加一个班长学号属性 ,应是外键,对应班长关系的主键学号,主键仍是班级号
或在班长的关系模式中,增加一个班级号属性,应是外键,对应班级关系的主键班级号,主键仍为学号
(3)这里给出 E-R模型中的1:1联系转换规则的抽象表达
对于实体E1和E2间的1:1联系,可以有三种转换处理方法
4、在教学信息管理案例系统中,班级和学生之间具有1:n的属于联系 ,对于1:n的联系,既可以单独对应一关系模式,也可以不单独对应一关系模式
(1)若将该联系单独转换为一个关系模式
- 该关系模式的属性则由参与联系的各实体的关键字以及该联系本身的属性构成
- 且该关系的主键为N端实体的关键字
- 每个实体的关键字均为该关系模式的外键
班级和学生之间的1:n的联系可以转换为一个关系模式,命名为属于,具有学号和班级号两个属性,均为该关系的外键,分别对应学生关系的主键学号和班级关系的主键班级号,学生实体的关键字学号作为该关系的主键
(2)如果联系不单独对应一关系模式
- 可将联系合并到n段实体所对应的关系模式中,需要在n端实体对应的关系模式中增加联系本身的属性以及1端实体的关键字
- 新增属性后,关系模式的主键不变,仍为原关系模式的主键
- 1端实体的关键字应是该关系模式的外键
对于班级和学生之间1:n的联系,则可在学生关系中增加一个所在班级号属性作为外键,对应班级关系的主键班级号,主键仍为学号
这里给出1:n联系转换规则的抽象表达,对于实体E1与E2之间的1:n联系,可以有两种转换处理方法
5、在教学信息管理案例系统中 ,学生和课程之间具有m:n的选课联系,对于这类m:n的联系,只能转换为一个独立的关系模式
- 该关系模式的属性由参与联系的各实体的关键字以及该联系本身的属性构成
- 关系模式的主键是各实体的关键字属性组合
- 每个实体的关键字均为该关系模式的外键
学生和课程之间m:n的联系要转换为一个单独的关系模式可命名为选课成绩,具有学号、课程号和成绩三个属性,学号和课程号组合构成该关系的主键,又均为该关系的外键,分别对应学生关系的主键学号和课程关系的主键课程号
这里给出m:n联系转换规则的抽象表达,实体E1和E2之间的m:n的联系,只能有一种转换处理方法
6、对于三个或三个以上实体多对多联系的转换,可根据情况采用不同的处理方法
- 若只有一个多端实体,则可按1:n联系的转换规则进行转换,可单独转换为一个关系模式,也可不单独转换为一个关系模式。将与联系相关的实体的关键字以及联系本身的属性作为新属性加入到多端实体所对应的关系模式中
- 若有多个多端实体,则按m:n联系的转换规则进行转换,需转换为一个单独的关系模式。该关系模式的属性为多元联系相连的各实体的关键字以及联系本身的属性,而关系模式的主键为各实体的关键字的组合
对于班级、课程和教师三个实体间,多对多联系可单独转换为一个关系模式,命名为班级选课,包含班级号、课程号、教师编号、上课年度、上课学期等属性,班级号、课程号、教师编号组合构成该关系的主键,又均为该关系的外键,分别对应三个实体关系的主键
四、子实体与ISA联系的转换
对于研究生这类子实体及与超类实体学生间的ISA联系,应该如何转换
- 子实体应单独转换为一个关系模式,关系模式的属性由超类实体的关键字和子类实体本身的属性构成
- 超类实体的关键字作为关系的主键,也是参照超类实体关系的外键,可通过外键继承超类实体的所有属性和与超类实体相关的联系
对于学生的一个子实体集研究生,可单独转换为一个关系模式,包括学号、所在学科、研究方向等属性,主键为学号,学号也是关系的外键,对应学生关系的主键学号
五、弱实体与依赖关系的转换
对于可能存在的家庭成员这类依赖于常规实体的弱实体及依赖关系应该如何转换呢?
因弱实体不能独立存在,且弱实体和常规实体之间只能是1:1或n:1联系
- 所以应将弱实体单独转换为一个关系模式,关系模式的属性由常规实体的关键字和弱实体本身的属性构成
- 关系模式的主键由常规实体的关键字与弱实体的关键字组合构成,说明弱实体要依赖于常规实体而不能单独存在
- 常规实体的关键字作为外键,来体现两个实体间的联系
对依赖于学生实体的家庭成员弱实体需单独转换为一个关系模式,包括学生学号,家庭成员的身份证号、姓名 ,与学生的关系,职业、住址等。学号和家庭成员的身份证号组合构成家庭成员关系的主键,学生学号作为关系的外键,对应学生实体关系的主键学号
六、案例系统
针对教学信息管理信息案例系统的数据库概念结构设计所得的E-R图,利用前述的实体与联系转换规则,可得到该数据库的逻辑结构设计结果,即数据库关系模式
1、包含实体对应的关系,有班级、教研室、课程关系
2、体现1:n联系的实体关系,有学生关系和教师关系
3、体现m:n联系的联系关系,有班级选课和选课成绩关系
4、子实体关系有研究生关系和导师关系
在研究生关系中增加属性指导教师,体现了与导师的多对一联系
在每个体现联系的关系模式中,都确定了与参照关系的外键
七、逻辑结构设计原则
- 从转换结果可以看出,按转换规则将概念结构设计的E-R图中的实体和联系转换为关系模式,遵循的是“一事一地”的模式设计原则。
- 所得到的关系数据库模式中,每个关系描述的信息比较单一,仅描述一个概念,即一个实体或实体之间的一种联系
八、关系模式的优化
(一)在数据库逻辑结构设计阶段,完成前面的逻辑结构设计后,还需要根据应用需求,对关系数据库模式进行优化。关系模式的优化是为了进一步数据库应用系统的性能,根据应用需求适当修改、调整关系模式的结构
- 一种优化就是以关系规范化理论为指导,根据范式要求,将关系模式规范化为3NF或BCNF
- 如果数据库设计者能深入分析应用需求、正确抽取所有的实体和联系,并将其由E-R模型按规则正确转换为关系模式,则关系模式通常不需要进行过多的规范化
1、比如对于学生实体和课程实体及两个实体间m:n的选课联系,按转换规则转换为三个关系模式,可判断每个关系模式均满足BCNF。但如果不按转换规则来转换,把m:n的联系不单独转换为一个关系模式,像1:n联系一样,把学生的学号和联系的成绩属性加入到课程实体中,主键也是学号和课程号组合,可判断此时课程关系只满足1NF。
2、但对于由班级选修教师所授课程联系转换来的班级选课选课关系模式,相关的需求分析的描述是
- 每个班级选修本专业开设的若干门课程,一个班级选修的某门课程只能由同一个教师来讲授。由该需求描述,可确定班级号和课程号函数决定教师编号
- 由相同课程可由不同教师讲授的需求描述,可确定课程号不函数决定教师编号
- 一个教师可为同一个班级讲授不同的课程,或为不同的班级讲授相同的课程,由该需求描述可确定班级号和教师编号不函数决定课程号,课程号和教师编号也不函数决定班级号
- 班级选修的某门课程只能在一个年度内的一个学期内实施完成。由该需求描述,可确定班级号和课程号函数决定上课年度和上课学期
由以上这些函数依赖,可判断班级号和课程号,完全函数决定关系的所有其他属性,可做主键。因此我们可修改班级选课关系(讲授关系)的关系模式设计,将主键改为班级号和课程号的集合。可以看到,原来以班级号、课程号和教师编号为主键的班级选课关系存在着非主属性对于候选键的部分函数依赖,关系模式只满足1NF,经过这样的修改,关系模式可达到BCNF,使得在授课教师没有确定的情况下,可进行学生教学计划的信息插入等操作。
需要注意的是,这里范式级别的提高,不是通过模式分解来完成的,而是通过修改关系模式的主键来消除部分函数依赖来实现的
(二)关系模式的另一种优化,是为满足系统应用性能需求,对某些关系模式进行合并,减少关系的连接操作对系统查询性能的影响
- 比如若应用对数据库的操作主要是进行查询操作,且查询涉及多个关系的属性时,DBMS可能要频繁进行关系的连接操作,为减小连接操作所花费的代价,可考虑将几个关系合并为一个关系
(三)在关系模式大的优化过程中,要注意以下几点
- 并不是规范化程度越高的关系模式就越优
- 低于BCNF的关系模式,虽然从理论分析上会存在不同程度的更新异常,但如果在实际应用中,只对此关系进行查询并不执行更新操作,则不会产生实际的影响
- 对于一个具体的应用来说,到底关系模式优化到什么程度,需要权衡查询响应时间和更新操作问题两者的利弊
最后,给出教学信息管理案例系统的数据库逻辑设计的结果
九、小结
- 基于关系数据模型,将数据库概念结构设计的E-R模型转换为关系数据库模式,完成了数据库的逻辑结构设计
- 得到的数据库模式还需在给定的DBMS上用SQL语言定义为在DBMS中存储的逻辑结构,即进行数据库的物理结构设计