数据库:第11周作业
目录
作业内容:P75-2,3,5,8
第2题
- 现在要建立关于系、学生、班级、学会等信息的一个关系数据库。语义为:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生,一个系的学生住在同一宿舍区,每个学生可参加若干学会,每个学会有若干学生。
描述学生的属性有:学号、姓名、出生日期、系名、班号、宿舍区。
描述班级的属性有:班号、专业名、系名、人数、入校年份。
描述系的属性有:系名、系号、系办公室地点、人数。
描述学会的属性有:学会名、成立年份、地点、人数、学生参加某会有一个入会年份。
- 请写出关系模式;
- 写出每个关系模式的最小函数依赖集,指出是否存在传递依赖。在函数依赖左部是多属性的情况下,讨论函数依赖是完全依赖还是部分函数依赖。
- 指出各关系模式的候选码、外码,有没有全码。
答:
关系模式有:
学生(学号,姓名,出生日期,系名,班号,宿舍区)
班级(班号,专业名,系名,人数、入校年份)
系(系名,系号,系办公室地点,人数)
学会(学会名,成立年份,地点,人数)
学生-学会(学号,学会名,入会年份)各关系模式的最小函数依赖集如下:
学生(学号,姓名,出生日期,系名,班号,宿舍区):
- 最小函数依赖集:
学号→姓名,学号→出生年月,学号→班号,班号→系名,系名→宿舍区。- 存在传递依赖:
学号→系名,学号→宿舍区,班号→宿舍区。班级(班号,专业名,系名,人数、入校年份):
- 最小函数依赖集:
班号→专业名,(专业名,入学年份)→班号,专业名→系名,班号→人数,班号→入学年份。- 存在传递依赖:
班号→系名。- 班号对(专业名,入学年份)是完全函数依赖。
系(系名,系号,系办公室地点,人数):
- 最小函数依赖集:
系名→系号,系号→系名,系号→系办公室地点,系号→人数。- 不存在传递函数依赖。
学会(学会名,成立年份,地点,人数):
- 最小函数依赖集:
学会名→成立年份,学会名→地点,学会名→人数。- 不存在传递函数依赖。
学生-学会(学号,学会名,入会年份)
- 最小函数依赖集:
(学号,学会名)→入会年份。- 不存在传递函数依赖。
- 入会年份对(学号,学会名)是完全函数依赖。
各关系模式的候选码、外码、全码如下:
学生(学号,姓名,出生日期,系名,班号,宿舍区):
候选码:学号
外码:班号、系名
无全码班级(班号,专业名,系名,人数、入校年份):
候选码:班号
外码:系名
无全码系(系名,系号,系办公室地点,人数):
候选码:系号
无外码
无全码学会(学会名,成立年份,地点,人数):
候选码:学会名
无外码
无全码学生-学会(学号,学会名,入会年份)
候选码:(学号,学会名)
外码:学号,学会名
无全码
第3题
- 设关系模式 R<A,B,C,D> ,函数依赖集 F={
A→C,C→A,B→AC,D→AC,BD→A}。
- 求出R的候选码。
- 求出F的最小函数依赖集。
- 将R分解为3NF,使其既具有无损连接性又具有函数依赖保持性。
答:
R的候选码为:
BD
F的最小函数依赖集:
F={ A→C,C→A,B→C,D→C}
求解过程:
首先将F中的函数依赖都分解为右部为单属性的函数依赖
F={ A→C,C→A,B→A,B→C,D→A,D→C,BD→A}判断A→C是否冗余:
设: G1={ C→A,B→A,B→C,D→A,D→C,BD→A}
得 (A)+G1=A
由于C不属于 (A)+G1
故 A→C不冗余同理得到C→A, B→C, D→C不冗余,而B→A, D→A, BD→A冗余。
将R分解为3NF:
τ={ AC,BC,DC,BD}
第5题
- 设关系模式 R(A,B,C