2、现在要建立关于系、学生、班级、学会等信息的一个关系数据库。语义为:一个系有若干专业,每个专业每年只能招一个班,每个班有若干学生,一个系的学生住在同一个宿舍区,每个学生可参加若干学生会,每个学会有若干学生。
描述学生的属性有:学号、姓名、出生年月、系名、班号、宿舍号
描述班级的属性有:班号、专业名、系名、人数、入校年份
描述系的属性有: 系名、系号、系办公室地点、人数
描述学会的属性有:学会名、成立年份、地点、人数、学生参加某会有一个入会年份
(1)请写出关系模式
(2)写出每个关系模式的最小函数依赖集,指出是否存在传递依赖。在函数依赖左部是多属性的情况下,讨论函数依赖是完全依赖还是部分函数依赖
(3)指出各关系模式的候选码,外码,有没有全码
答:
①关系模式学生
U={学号,姓名,出生年月,系名,班号,宿舍号}
F={学号→姓名,姓名→出生年月,姓名→系号,姓名→班号,姓名→宿舍号}
②关系模式班级
U={班号,专业号,系名,人数,入校年份}
F={班号→专业号,专业号→系名,班号→人数,班号→入校年份}
③关系模式系
U={系名,系号,系办公室地点,人数}
F={系号→系名,系名→系办公室地点,系名→人数}
④关系模式学会
U={学会号,成立年份,地点,人数,学生参加某会入会年份}
F={学会号→成立年份,学会号→地点,学会号→人数}
(2)
学生关系的最小依赖集为{学号→姓名,学号→出生日期,学号→班号,学号→宿舍区}
班级关系的最小依赖集为{班号→专业名,班号→系名,班号→人数,班号→入校年份}
系关系的最小依赖集为{系号→系名,系号→系办公室地点,系号→人数}
学会关系的最小依赖集为{学会名→成立年份,学会名→地点,学会名→人数}
以上依赖集均无传递依赖,部分依赖。
(3)
①候选码:学号 外码:系名 班号
②候选码:班号 外码:系名
③候选码:系名 系号 系办公室地点 外码:
④候选码:学会号 地点 外码:
无全码
3、设关系模式R,函数依赖集F={A→C,C→A,B→AC,D→AC,BD→A}
(1)求出R的候选码
(2)求出F的最小依赖集
(3)将R分解为3NF,使其既具有无损连接性又具有函数依赖保持性
答:
(1)
假设候选码为(AB)①可以堆到(ABC)②不能推到D
假设为(AD) ①可以堆到(ADC)②不能推到B
假设为(ABD) ①可以堆到(ABCD)
假设为BD ①可以堆到(ABCD)
所以候选码为BD
(2)
最小依赖集为:{A→C,C→A,B→C,D→C}
①化简F={A→C,C→A,B→A,B→C,D→A,D→C,BD→A}
②去掉传递函数依赖:F={A→C,C→A,B→C,D→C,BD→A}
③如果去掉A→C则A的闭包为(A),所以不能去掉;
④如果去掉C→A则C的闭包为(C),所以不能去掉;
⑤如果去掉B→C则B的闭包为(B),所以不能去掉;
⑥如果去掉D→C则D的闭包为(D),所以不能去掉;
⑦如果去掉BD→A则BD的闭包为(BDCA),所以可以去掉;
⑧综上7点得到最小依赖集为:{A→C,C→A,B→C,D→C}
(3)分解为:(AC),(BC),(DC),(BD)
①由于最小依赖集为:{A→C,C→A,B→C,D→C},所以可以分为(AC),(BC),(DC)
②要保持无损连接性则要叫上候选码(BD)
③所以分解为(AC),(BC),(DC),(BD)
5、设关系模式R(A,B,C,D,E,F),函数依赖集F={AB→E,BC→D,BE→C,CD→B,CE→AF,CF→BD,C→A,D→EF},求F的最小函数依赖集。
答:最小函数依赖集为:F={AB→E,BE→C,CE→F,CF→B,CF→D,C→A,D→E,D→F}
8、设关系模式R(B,O,I,S,Q,D)函数依赖集F={S→D,I→S,IS→Q ,B→Q}
(1)、找出R的主码;
(2)、把R分解为BCNF,且具有无损连接性。
答:主码为:IBO
要分解为BCNF则(SD)(ISQ)(BIO)