作业完成者:王典 2013211958
2、现需要建立关于系、学生、班级、学会等信息的一个关系数据库。语义为:一个系有若干个专业,每个专业每年只招收一个班,每个班有若干个学生,一个系的学生住在同一个宿舍区,每个学生可参加若干学会,每个学会女有若干学生
描述学生的属性有:学号、姓名、出生日期、系名、班号、宿舍区。
描述班级的属性有:班号、专业名、系名、人数、入校年份。
描述系的属性有:系名、系号、系办公室地点、人数。
描述学会的属性有:学会名、成立年份、地点、人数、入会年份
(1) 请写出关系模式
学生 U={学号,姓名,出生日期,系名,班号,宿舍区}
F={
学号->姓名,学号->出生日期,学号->班号, 学号->宿舍区,班号->系名,系名->宿舍区}
班级 U={班号,专业名,系名,人数,入校年份}
F={
班号->人数,班号->系名,班号->入校年份,班号->专业名,专业名->系名}
系 U={系名,系号,系办公室地点,人数}
F={
系号->系名,系号->系办公室地点,系号->人数}
学会 U={学会名,成立年份,地点,人数,入会年份}
F={
学会名->成立年份,学会名->地点,学会名->人数}
(2) 写出每个关系模式的最小依赖集,指出是否存在传递依赖。在函数依赖左部是多属性的情况下,讨论函数依赖是完全依赖还是部分函数依赖
关系模式学生的最小依赖集:{ 学号->姓名,学号->出生日期,学号->班号,班号->系名,系名->宿舍区}
传递依赖:无
关系模式班级的最小依赖集:{ 班号->人数,班号->入校年份,班号->专业名,专业名->系名}
传递依赖:无
关系模式系的最小依赖集:{ 系号->系名,系号->系办公室地点,系号->人数}
传递关系:无
关系模式学会的最小依赖集:{学会名->成立年份,学会名->地点,学会名->人数}
传递依赖:无
(3) 指出各关系模式的候选码、外码、有没有全码。
|
候选码 |
外码 |
全码 |
学生 |
学号 |
系名,班号 |
无 |
系 |
系号 |
无 |
无 |
学会 |
学会名 |
无 |
无 |
3、设关系模式R<A,B,C,D>,函数依赖集F={A->C,C->A,B->AC,D->AC,BD->A }.
(1)求出R的候选码。
答:BD
(2)求出F的最小依赖集
- 将函数依赖集F右部分解为单属性有F={A->C,C->A,B->C,D->C,BD->A,B->A,D->A}
- 删除传递函数依赖B->C,D->C得F={A->C,C->A,BD->A,B->A,D->A}
- 删除部分函数依赖BD->A得F={A->C,C->A,B->A,D->A}
- 即最小函数依赖集Fm={A->C,C->A,B->A,D->A}
(3)将R分解为3NF,使其既具有无损连接性又具有函数依赖保持性。
- 由(2)已知最小函数依赖集Fm={A->C,C->A,B->A,D->A}
- 由(1)已知主码为BD
- 将函数分解为3NF使其既具有无损连接性又具有函数依赖保持性有ρ={BD,CA,BA,DA}
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右部分解为单属性有F{ AB->E,BC->D,BE->C,CD->B,CF->B,CE->A,CE->F,CF->D,C->A,D->E,D->F}
- 设AB->E冗余,则求剩余部分(AB)的闭包=AB,所以AB->E保留
- 设BC->D冗余,则求剩余部分(BC)的闭包=ABCDEF,所以BC->D删除
- 设BE->C冗余,则求剩余部分(BE)的闭包=BE,所以BE->C保留
- 设CD->B冗余,则求剩余部分(CD)的闭包=ABCDEF,所以CD->B删除
- 设CF->B