在数据库应用系统的概念结构设计阶段,数据库设计人员通常使用E-R图描述出数据库结构中实体及实体之间的联系。在接下来的逻辑结构设计阶段,系统开发人员需要把概念结构设计阶段建立的基本E-R图,按选定的数据模型(如层次模型、网状模型、关系模型等),转换成相应的逻辑模型。
E-R图向关系模型的转换是要解决如何将实体和实体之间的联系转换为关系的问题,并确定这些关系的属性和主键。这种转换要符合关系模型的原则:
1)对于E-R图中的每一个实体型,都应将其转换为一个关系模式。该关系模式应包含对应实体型的全部属性,实体标识符就是关系模式的主键。
2)对于E-R图中的每一个二元联系型,要根据实体型之间联系的类型采取不同的方法加以处理。具体可分为以下三种情况:
第一种情况,若实体型 R 1 与 R 2 之间的联系是1:1联系,则把联系型上的属性加到任一实体型(如 R 1 )对应的关系模式中,并把另一实体型 R 2 的实体标识符加到 R 1 对应的关系模式中作为 R 1 的外键。
【例4.4】 请将校长管理学校E-R图(见图4.2)转换为关系模式集。
图4.2 校长管理学校E-R图
【解答】 从图4.2可见,在校长管理学校E-R图中共有两个实体型,即“校长”和“学校”,它们的实体标识符分别是身份证号和学校名,“校长”和“学校”之间存在1:1联系。
首先,可将这两个实体型转换为以下两个关系模式:
校长( 身份证号 ,姓名,性别,生日,职称)
学校( 学校名 ,地址,级别)
其次,在“校长”关系模式中加入E-R图的联系型的年薪属性,并将“学校”实体型中的主键学校名加到“校长”关系模式中作为外键,得到:
校长( 身份证号 ,姓名,性别,生日,职称,年薪,学校名)
因此,最终将校长管理学校E-R图转换为以下关系模式集:
校长( 身份证号 ,姓名,性别,生日,职称,年薪,学校名)
学校( 学校名 ,地址,级别)
同理,也可将E-R图中联系型的年薪属性加入“学校”关系模式中,并将“校长”实体型中的主键身份证号加到“学校”关系模式中作为外键,则E-R图可转换为以下关系模式集:
校长( 身份证号 ,姓名,性别,生日,职称)
学校( 学校名 ,地址,级别,年薪,身份证号)
【例4.5】 请将学生考试排名E-R图(见图4.3)转换为关系模式集。
图4.3 学生考试排名E-R图
【解答】 从图4.3可见,在学生考试排名E-R图中只有一个实体型,即“学生”,其实体标识符是学号,在考试排名联系型中,“学生”与“学生”之间存在着1:1联系。
首先,可将学生实体型转换为以下关系模式:
学生( 学号 ,姓名,性别,名次)
其次,处理E-R图中的联系型。由于考试排名是1:1联系,且没有属性,因此将与该联系型相关的一个实体型的实体标识符加到另一实体型对应的关系模式中作为外键即可。该联系型相关的实体型只有“学生”一个,因此,得到以下关系模式:
学生( 学号 ,姓名,性别,名次,学号)
根据关系的性质之一——属性名各异性,在一个关系模式中不能存在两个同名的属性,因此我们可以把其中一个学号改为“下一名次的学号”,最终得到以下关系模式:
学生( 学号 ,姓名,性别,名次,下一名次的学号)
第二种情况,若实体型 R 1 与 R 2 之间的联系是1: N 联系,则把联系型上的属性加到实体型 R 2 对应的关系模式中,并把实体型 R 1 的实体标识符加入 R 2 对应的关系模式中作为 R 2 的外键。
【例4.6】 请将学校聘任教师E-R图(见图4.4)转换为关系模式集。
图4.4 学校聘任教师E-R图
【解答】 从图4.4可见,在学校聘任教师E-R图中共有两个实体型,即“学校”和“教师”,它们的实体标识符分别是学校名和身份证号,“学校”和“教师”之间存在1: N 联系。
首先,可将这两个实体型转换为以下关系模式集:
学校( 学校名 ,地址,级别)
教师( 身份证号 ,姓名,性别,生日,职称)
其次,在“教师”关系模式中加入E-R图中联系型的年薪属性,并将“学校”实体型中的主键学校名加入“教师”关系模式中作为外键,得到:
教师( 身份证号 ,姓名,性别,生日,职称,年薪,学校名)
因此,最终将学校聘任教师E-R图转换为以下关系模式集:
学校( 学校名 ,地址,级别)
教师( 身份证号 ,姓名,性别,生日,职称,年薪,学校名)
思考 :是否可将上述学校聘任教师E-R图转换为以下关系模式集?
学校( 学校名 ,地址,级别,年薪,身份证号)
教师( 身份证号 ,姓名,性别,生日,职称)
【例4.7】 请将教师团队E-R图(见图4.5)转换为关系模式集。
图4.5 教师团队E-R图
【解答】 从图4.5可见,在教师团队E-R图中只有一个实体型,即“教师”,它的实体标识符是工号,在一个教师团队中只有一位负责人,因此在领导联系型中,“负责人”与“普通教师”之间存在1: N 联系。
首先,可将教师实体型转换为以下关系模式:
教师( 工号 ,姓名,性别,生日,职称)
其次,处理E-R图中的联系型。由于“领导”联系型是1: N 联系,且其没有属性,因此将与该联系型相关的“1”端实体的实体标识符加入“ N ”端实体对应的关系模式中作为外键即可。该联系型相关的实体只有一个,因此,得到以下关系模式:
教师( 工号 ,姓名,性别,生日,职称,工号)
根据关系的性质之一——属性名各异性,在一个关系模式中不能存在两个同名的属性,因此我们可以把其中一个工号改为“负责人工号”,最终得到以下关系模式:
教师( 工号 ,姓名,性别,生日,职称,负责人工号)
第三种情况,若实体型 R 1 与 R 2 之间的联系是 M : N 联系,则将联系型也转换成一个关系模式,其属性包括联系型的全部属性,以及 R 1 与 R 2 的实体标识符,而该关系模式的主键为 R 1 与 R 2 的实体标识符的组合。
【例4.8】 请将学生选课E-R图(见图4.6)转换为关系模式集。
图4.6 学生选课E-R图
【解答】 从图4.6可见,在学生选课E-R图中共有两个实体型,即“学生”和“课程”,它们的实体标识符分别是学号和课程号。首先,可将这两个实体型转换为以下关系模式集:
学生( 学号 ,身份证号,姓名,性别,班级,生日)
课程( 课程号 ,课程名,学时,学分)
其次,由于“学生”和“课程”之间存在着 M : N 联系,因此,为该联系型建立一个名为“选修”的关系模式,该关系模式包含联系型的成绩属性,其主键由“学生”和“课程”的实体标识符共同组成,即:
选修( 学号 , 课程号 ,成绩)
因此,最终将学生选课E-R图转换为以下关系模式集:
学生( 学号 ,身份证号,姓名,性别,班级,生日)
课程( 课程号 ,课程名,学时,学分)
选修( 学号 , 课程号 ,成绩)
思考 :在例4.8的结果中,“选修”关系模式的学号与课程号是外键吗?成绩属性是否可以作为“学生”关系模式的属性或者“课程”关系模式的属性?
3)对于E-R图中的每一个多元联系型,创建一个新的关系模式,该关系模式包含多元联系型的全部属性,其主键由参与该联系型的全部实体型的实体标识符组成。
【例4.9】 请将教学情况E-R图(见图4.7)转换为关系模式集。
图4.7 教学情况E-R图
【解答】 从图4.7可见,在教学情况E-R图中共有三个实体型,即“学生”“教师”和“课程”,它们的实体标识符分别是学号、工号和课程号。首先,可将这三个实体型转换为以下关系模式集:
学生( 学号 ,身份证号,姓名,性别,班级,生日)
课程( 课程号 ,课程名,学时,学分)
教师( 工号 ,身份证号,姓名,性别,生日,学院)
其次,由于“学生”和“课程”之间、“课程”和“教师”之间、“教师”和“学生”之间都存在 M : N 联系,因此,为该多元联系型建立一个名为“教学”的关系模式,该关系模式包含联系型的时间、地点和成绩等属性,其主键由“学生”“教师”和“课程”的实体标识符共同组成,即:
教学( 工号 , 学号 , 课程号 ,时间,地点,成绩)
因此,最终将教学情况E-R图转换为以下关系模式集:
学生( 学号 ,身份证号,姓名,性别,班级,生日)
课程( 课程号 ,课程名,学时,学分)
教师( 工号 ,身份证号,姓名,性别,生日,学院)
教学( 工号 , 学号 , 课程号 ,时间,地点,成绩)
4)对于泛化关系E-R图,为超类实体 A 创建一个包含其所有属性的关系模式 R A ,为每个子类实体 B i 创建一个包含其所有专有属性和 R A 的主键 K 的关系模式 R Bi ,并且设置 K 为 R Bi 的主键。
【例4.10】 大学里的人员基本可以分为两大类:教师和学生。“人员”为“教师”和“学生”的超类实体,包含共同属性;“教师”和“学生”是“人员”的子类实体,它们可包含自身特有的属性。因此,“人员”与“教师”“学生”等的泛化关系如图4.8所示。其中,“人员”的属性包括身份证号、姓名、性别、生日等,身份证号为实体标识符。“教师”的属性包括身份证号、工号、姓名、性别、生日、学院等,身份证号或工号可作为实体标识符。“学生”的属性包括身份证号、学号、姓名、性别、生日、班级等,身份证号或学号可作为实体标识符。请将图4.8的泛化关系E-R图转换为关系模式集。
图4.8 人员与教师、学生等的泛化关系
【解答】 在图4.8中共有三个实体型,即“人员”“教师”和“学生”,其中“人员”是超类实体,“教师”和“学生”是子类实体。首先,可将“人员”这个超类实体转换为以下关系模式:
人员( 身份证号 ,姓名,性别,生日)
其次,对于作为子类实体的“教师”,从其属性集中抽取其专有属性,并加入超类实体“人员”的主键——身份证号,并将身份证号作为主键,得到以下关系模式:
教师( 身份证号 ,工号,学院)
同理,可将另一个子类实体“学生”转换为以下关系模式:
学生( 身份证号 ,学号,班级)
因此,最终将图4.8转换为以下关系模式集:
人员( 身份证号 ,姓名,性别,生日)
教师( 身份证号 ,工号,学院)
学生( 身份证号 ,学号,班级)