(一)、ER图转换成关系模式集的算法:
举例:Er图为如下所示:
![](https://img-blog.csdn.net/20141009110456989?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGlmZW4wOTA4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![]()
书籍:书号 名称 品种 数量 存放位置
借书人:单位 姓名 借书证号
出版社:出版社名 电话
(1)、若实体间的关系是1:1,可以在俩个实体类型转换成的俩个关系模式中任意一个关系模式的属性中加入另一个关系模型的键(作为外键),和联系类型的属性
我们仅仅需要知道可以在俩个关系模型中加入另一个关系模型的键和联系类型的属性就可以拉。
(2)、若实体间的联系是1:n,则在n端实体类型转换成的关系模型中加入1端实体类型的键(作为外键)和联系类型的属性。
因为是1:n的联系,所以n段的实体,也就是书籍需要加入出版社中的主键作为书籍中的外键。所以:
书籍(书名,名称,品种,数量,存放位置,出版社名) 备注:书名是主键,出版社名为外键
(3)、若实体间的联系为m:n,则将联系类型也转换为关系模型,其属性为俩段实体类型的键(作为外键)加上联系类型的属性,而键为俩段实体键的组合。
由于借书人和书籍的关系是m:n的关系,中间的联系类型为借阅,所以:
借阅(借书证号,书号,借书日期,还书日期) 备注:借书证号和书号共同为主键
同时借书人的关系模型为:借书人(单位,姓名,借书证号)也就是在转化的过程中,我们需要增加的有m:n中的联系类型(比如借阅)和1:n中的n端实体(比如书籍)。
(二)、超键,候选键,主键,外键
1、概念
超键:在关系中能唯一标识元组的属性集称为关系模式的超键
候选键:不含有多余的属性的超键成为候选键。
主键:用户选作元组标识的候选键称为主键。
外键:如果关系模式R中属性k是其他模式的主键,那么k在模式r中成为外键。
2、关系图
3、举例
学生(学号,姓名,年龄,性别) 备注:假定姓名是唯一的,也就是没有重名的现象
超键:
因为学号能决定唯一的学生,所以学号是一个超键
因为姓名能决定唯一的学生,所以姓名是一个超键
因为(学号,姓名)能决定唯一的学生,所以这个组合也是一个超键
因为(学号,姓名,年龄)能决定唯一的学生,所以这个组合也是一个超键。
。。。。。。。。
总结:唯一标识元组的属性集,也就是这个超键可以决定这个关系模型,可以是组合,也可以是他的一个属性
候选键:
因为学号是唯一的,而且没有多余的属性,所以学号是候选键
因为姓名也是唯一的,而且没有多余的属性,所以姓名也是候选键
但是(学号,姓名)不是候选键,因为学号可以单独决定这个学生,显然姓名就是多余的啦,所以这个仅仅是超 键,但是不是候选键。
同样,(学号,姓名,年龄)也不是候选键
所以:候选键是不含多余属性的超键
主键:
因为学号和姓名都是唯一可以决定学生的候选键,所以学号或者是姓名都可以是主键。
所以主键是候选键中的一个。
对数据库的知识理解的很浅,通过不断的学习,会逐渐加深得。