习题5
2.
(1)写出关系模式:
学生:R1=
U1={学号,姓名,出生日期,系名,班号,宿舍区};
F1={学号->(姓名,出生日期,系名,班号,宿舍区),班号->系名,系名->宿舍区};
班级:R2=
U2={班号,专业名,系名,人数,入校年份};
F2={班号->(专业名,人数,入校年份),专业名->系名,(专业名,入校年份)->(人数,班号)};
系:R3=
U3={系名,系号,系办公室地点,人数};
F3={系名->(系号,系办公地点,人数),系号->(系名,系办公地点,人数)};
学会:R4=
U4={学会名,成立年份,地点,人数,学生参加某会入会年份};
F4={学会名->(成立年份,地点,人数,学生参加某会入会年份)};
(2)写出各模式最小函数依赖集,是否存在传递依赖,左部为多属性时讨论是完全函数依赖还是部分函数依赖。
F1m=F1;存在传递函数。
F2m={班号->(专业名,人数,入校年份),专业名->系名,(专业名,入校年份)->人数};存在传递依赖。
(专业名,入校年份)->人数 :完全函数依赖。
F3m={系名->(系号,系办公地点,人数};不存在传递依赖。
F4m=F4; 不存在传递依赖。
(3)
关系模式 候选码 外码 R1R2R3R4全部无全码
学生R1 学号 系名 、班号
班级R2 班号 系名
系R3 系名、系号 无
学会R4 学会名 无
3.
(1)R的候选码为BD;
(2)求F的最小函数依赖集:
解:分解为:A->C,C->A,B->A,B->C,D->A,D->C,BD->A;
从左至右依次检测可去掉多余的函数依赖BD->A,得最小函数依赖集
{A->C,C->A,B->A,B->C,D->A,D->C};
(3)第三范式:每个非主属性既不部分函数依赖于码,也不传递函数依赖于码;
p={ABC,ACD,ABD}因为BD属于BDA,所以保持函数依赖的3NF为{ABC,ACD,ABD};
5.求F的最小函数依赖集
分解函数依赖集为:{AB->E,BC->D,BE->C,CD->B,CE->A,CE->F,CF->B,CF->D,C->A,D->E,D->F,};
从左至右依次考察是否能去掉C->A,D->E,D->F;(不能);
从左至右,对AB->E,去掉A,B+={ABCDEF},所以A可以去掉,以此类推,得最小函数依赖集:
Fm={B->E,C->D,E->C,E->F,F->B,C->A,D->F};
8.找出R的主码,将R分解为具有无损连接性的BCNF。
(1)R的主码:IB;
(2)因为IB是主码,先分解 S->D; R1={SD}, F1={S->D}; R2={BOISQ}, F2={I->S, IS->Q, B->Q} ;
显然,F2不属于BCNF,再分解 IS->Q, R3={ISQ}, F3={IS->Q}; R4={BOIS}, F4={I->S, B->O} ;
所以最终分解为:{SD,ISQ,BOIS}