整理转载自:
https://blog.csdn.net/u012501459/article/details/12945191
https://blog.csdn.net/u013036685/article/details/49231657
https://blog.csdn.net/tang_huan_11/article/details/12974857
一.概念
E-R(Entity-Relationships)模式的构成成分是实体集、属性和联系集,其表示方法如下:
(1) 实体集用矩形框表示,矩形框内写上实体名。
(2) 实体的属性用椭圆框表示,框内写上属性名,并用无向边与其实体集相连。
(3) 实体间的联系用菱形框表示,联系以适当的含义命名,名字写在菱形框中,用无向连线将参加联系的实体矩形框分别与菱形框相连,并在连线上标明联系的类型,即1—1、1—N或M—N。
关系模式(Relation Schema)是对关系的描述,它可以形式化地表示为:
R(U,D,dom,F)其中R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,dom为属性向域的映象集合,F为属性间数据的依赖关系集合。通常简记为:R(U)或R(A1,A2,…,An)其中R为关系名,U为属性名集合,A1,A2,…,An为各属性名。
二.E-R图转换为关系模型的转换规则
1.实体类型的转换
(1)将每个实体类型转换成一个关系模式。
(2)实体的属性即为关系模式的属性。
(3)实体标识符即为关系模式的键。
2.二元联系类型的转换
(1)若实体间联系是1:1,可以在两个实体类型转换成的两个关系模式中任意一个关系模式的属性中加入另一个关系模式的键和联系类型的属性。 另一种方式是将联系转换成单独的关系模式,关系模式的名称取自联系的名称,关系模式的属性包括该联系所关联的两个实体的码及联系的属性,该关系模式的码取自任意一方的实体的码。
实例:
一个学校有一个校长进行管理,一个校长只在一个学校任职,则学校和校长之间的关系为一对一。学校的信息有:学校编号,校名,地址,电话;校长的信息有;校长的职工编号,校长姓名,性别,电话。校长任职会产生任职日期的属性。
转换为关系模式:
(一)学校(学校编号,校名,地址,职工编号,任职日期)主键为学校编号,外键为职工编号
校长(职工编号,校长姓名,性别,电话)主键为职工编号
(二)学校(学校编号,校名,地址)主键为学校编号
校长(职工编号,校长姓名,性别,电话,学校编号,任职日期)主键为职工编号,外键为学校编号
(三)学校(学校编号,校名,地址)主键为学校编号
校长(职工编号,校长姓名,性别,电话)主键为职工编号
任职(学校编号,职工编号,任职日期)主键为学校编号或职工编号(之前的错误:学校编号和职工编号的联合主键),外键为学校编号,职工编号
(2)若实体间联系是1:N,则在N端实体类型转换成的关系模式中加入1端实体类型的键和联系类型的属性。 另一种方式是将联系转换成单独的关系模式,关系模式的名称取自联系的名称,关系模式的属性包括该联系所关联的两个实体的码及联系的属性,该关系模式的码取自多方的实体的码。
实例:
一个部门中可以有多个员工,而每个员工仅属于一个部门,则部门与员工就可以表示为一对多。
转换为关系模式:
(一)部门(部门号,部门名称,电话)主键为部门号
员工(员工号,姓名,电话,工资,部门号)主键为员工号,外键为部门号。
(二)部门(部门号,部门名称,电话)主键为部门号
员工(员工号,姓名,电话,工资)主键为员工号
隶属(员工号,部门号)主键为员工号,外键为员工号、部门号
(3)若实体间联系是M:N,则将联系类型也转换成关系模式,其属性为两端实体类型的键加上联系类型的属性,而键为两端实体键的组合。
实例:
在选课系统中,一个学生可以选多门课程,一个课程也有多名学生上课,学生选择的每门课程都有相应的成绩,课程和学生之间的关系就是多对多的关系。
转换为关系模式:
课程(课程号,课程名称,授课教师)主键为课程号
学生(学号,姓名,性别)主键为学号
选课(课程号,学号,成绩)主键为课程号和学号组成的联合主键,外键为课程号,学号。
3.一元联系类型的转换
和二元联系类型的转换类似。
(1)运动员名次之间存在着1:1联系
①运动员(编号,姓名,性别,名次,上一名次编号)
(2)职工之间存在上下级联系,即1:N联系
①职工(工号,姓名,年龄,性别,经理工号)
(3)工厂的零件之间存在着组合关系(M:N联系)
①零件(零件号,零件名,规格)
②组成(零件号,子零件号,数量)
4.三元联系类型的转换
第一种:
(1)若实体间联系是1:1:1,可以在三个实体类型转换成的三个关系模式中任意一个关系模式的属性中加入另两个关系模式的键(作为外键)和联系类型的属性。
(2)若实体间联系是1:1:N,则在N端实体类型转换成的关系模式中加入两个1端实体类型的键(作为外键)和联系类型的属性。
(3)若实体间联系是1:M:N,则将联系类型也转换成关系模式,其属性为M端和N端实体类型的键(作为外键)加上联系类型的属性,而键为M端和N端实体键的组合。
(4)若实体间联系是M:N:P,则将联系类型也转换成关系模式,其属性为三端实体类型的键(作为外键)加上联系类型的属性,而键为三端实体键的组合。
第二种:总是将三元联系类型也转换成关系模式,其属性为三端实体类型的键(作为外键)加上联系类型的属性,而键为三端实体键的组合。
三元联系的ER图结构转换为关系模式
①仓库(仓库号,仓库名,地址)
②商店(商店号,商店名)
③商品(商品号,商品名)
④进货(商店号,商品号,仓库号,日期,数量)