题目
构造满足需求的E-R图
矩形通常用于表示实体,圆形表示属性,菱形表示联系,请看下图:
将E-R图转换为等价的关系模式。
- 图书(书号、书名、数量、位置、出版社名(外键))
- 出版社(出版社名、邮编、地址、电话、E-mail)
- 借书人(借书证号、姓名、单位)
- 借阅(书号(外键)、借书证号(外键)、借书日期、还书日期)
指出转换后的每个关系模式的候选键
思路
候选键是指在关系数据库中,能够唯一标识元组(行)的一个或多个属性集。在一个关系模式中,可能会有多个候选键,而其中一个候选键被选作主键。要找到候选键,可以遵循以下步骤:
1. 理解函数依赖
先分析关系模式中属性之间的函数依赖。函数依赖意味着某些属性值可以唯一确定其他属性的值。例如,在学生表中,学号可以唯一确定学生的姓名、性别等属性。
例如:
-
如果我们有一个关系模式 R(A, B, C, D),并且已知 A -> B 和 A -> C, D,那么属性 A 是候选键,因为它唯一确定了其他所有属性。
2. 寻找超键
超键是能唯一标识关系中所有元组的属性集合。通常是一个或多个属性的组合。最简单的超键就是所有属性的集合。
例如: 在图书表 Book(书号, 书名, 数量, 出版社名) 中,书号 可以唯一标识一本书,因此它是一个超键。
3. 寻找候选键
候选键是最小的超键,即无法去除任何属性的超键。候选键不能包含冗余属性。
步骤:
-
找到所有可能的超键。
-
删除那些包含冗余属性的超键,剩下的就是候选键。
4. 例子:
示例1:图书表 Book(书号, 书名, 数量, 出版社名)
-
超键:{书号}, {书号, 书名}, {书号, 出版社名}, {书号, 数量, 出版社名} 等。
-
候选键:{书号}(最小且唯一标识所有属性)。
示例2:借书表 Borrow(书号, 借书证号, 借书日期, 还书日期)
-
超键:{书号, 借书证号}, {书号, 借书证号, 借书日期} 等。
-
候选键:{书号, 借书证号}(因为一个借书人可能多次借阅同一本书,复合键才能唯一标识)。
总结:
-
分析属性之间的函数依赖。
- 找到所有超键。
- 删除冗余属性,得到最小的超键作为候选键。
每个关系可能有多个候选键,而其中一个候选键会被选为主键。
解法
1. 图书(书号、书名、数量、位置)
3. 借书人(借书证号、姓名、单位)
4. 借阅(书号、借书证号、借书日期、还书日期)
总结:
-
图书表的候选键:书号
-
出版社表的候选键:出版社名
-
借书人表的候选键:借书证号
-
借阅表的候选键:(书号、借书证号)
结尾
如果有写的不对的地方欢迎在评论区批评指正,谢谢!!!