二、现需要建立关于系、学生、班级、学会等信息的一个关系数据库。语义为:一个系有若干个专业,每个专业每年招收一个班,每个班有若干个学生,一个系的学生住在同一个宿舍区,每个学生可参加若干学会,每个学会女有若干学生
描述学生的属性有:学号、姓名、出生日期、系名、班号、宿舍区。
描述班级的属性有:班号、专业名、系名、人数、入校年份。
描述系的属性有:系名、系号、系办公室地点、人数。
描述学会的属性有:学会名、成立年份、地点、人数、入会年份
1、 请写出关系模式
学生 U={学号、姓名、出生日期、系名、班号、宿舍区}
F={学号-〉姓名,学号-〉出生日期,学号-〉系名,系名-〉宿舍区,学号-〉宿舍区,班号-〉系名,学号-〉班号}
班级 U={班号,专业名,系名,人数,入校年份}
F={班号-〉专业名,专业名-〉系名,班号-〉人数,班号-〉入学年份}
系 U={系名,系号,系办公室地点,人数}
F={系号->系名,系号->系办公室地点,系号->人数}
学会 U={学会名,成立年份,地点,人数,入会年份}
F={学会名->成立年份,学会名->地点,学会名->人数}
2、写出每个关系模式的最小依赖集,指出是否存在传递依赖。在函数依赖左部是多属性的情况下,讨论函数依赖是完全依赖还是部分函数依赖。
{学号->姓名,学号->出生日期,学号->班号,班号->系名,系名->宿舍区}
无
{班号->人数,班号->入校年份,班号->专业名,专业名->系名}
无
{系号->系名,系号->系办公室地点,系号->人数}
无
{学会名->成立年份,学会名->地点,学会名->人数}
无
3、 指出各关系模式的候选码、外码、有没有全码。
班级:候选码是班号,外码是系名,没有全码
系:候选码是系号,无外码,无全码
学会:候选码是学会名,无外码,无全码
三、设关系模式为R〈A,B,C,D〉,函数依赖集是F={A——〉C,C——〉A,B——〉AC,D——〉AC,BD——〉A}
1、求出R的候选码
BD
五、设关系模式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冗余,则求剩余部分(CF)的闭包=CFA,所以CF->B保留
- 设CF->D冗余,则求剩余部分(CF)的闭包=CFA,所以CF->D保留
- 设CE->A冗余,则求剩余部分(CE)的闭包=CEAFDB,所以CE->A删除
- 设CE->F冗余,则求剩余部分(CE)的闭包=CEA,所以CE->F保留
- 设C->A冗余,则求剩余部分(C)的闭包=C,所以C->A保留
- 设D->E冗余,则求剩余部分(D)的闭包=D,所以D->E保留
- 设D->F冗余,则求剩余部分(D)的闭包=D,所以D->F保留
- 因此最小函数依赖集Fm={AB->E,BE->C,CE->F,CF->B,CF->D,C->A,D->E,D->F}
八、设关系模式R(B,O,I,S,Q,D),函数依赖集F={S->D,I->S,IS->Q,B->Q}.
1、找出R的主码
IBO
2、把R分解成BCNF,且具有无损连接性
由(1)得知主码为IBO
令S1=(S,D)(S->D),则有S'1=(B,O,I,S,Q)不满足条件
令S2=(I,S,Q),则有S'2=(B,O,I)满足条件
所以分解为ρ={SD,ISQ,IBO}