2、关系模式:
学生(学号,姓名,出生日期,系名,班号,宿舍区);班级(班号,专业名,系名,人数,入校年份);
系(系名,系号,系办公室地点,人数);学会(学会名,成立年份,地点,人数);
学生-学会(学号,学会名,入会年份)。
(1)学生(学号,姓名,出生日期,系名,班号,宿舍区):
最小函数依赖集:学号——>姓名,学号——>出生日期,学号——>系名,学号——>班号,系名——>宿舍。
传递依赖:学号——>宿舍。
候选码:学号。外码:班号,系名。
(2)班级(班号,专业名,系名,人数,入校年份):
最小函数依赖集:班号——>专业名,班号——>人数,班号——>入校年份,专业名——>系名。
传递依赖:班号——>系名。
候选码:班号。外码:系名。
(3)系(系名,系号,系办公室地点,人数):
最小函数依赖集:系号——>系名,系名——>系号,系号——>系办公室地点,系号——>人数。
无传递依赖。候选码:系名,系名。外码:无。
(4)学会(学会名,成立年份,地点,人数):
最小函数依赖集:学会名——>成立年份,学会名——>地点,学会名——>人数。
无传递依赖。候选码:学会名。无外码。
(5)学生-学会(学号,学会名,入会年份):
最小函数依赖集:(学号,学会名)——>入会年份。
无传递依赖,是完全函数依赖。候选码:(学号,学会名)外码:学号,学会名。
3、(1)R的候选码为BD。(BD)3 = BDAC。
(2)将F中的函数依赖都分解为右部为单属性的函数依赖.
F={A→C,C→A,B→A,B→C,D→A,D→C,BD→A}
去掉F中冗余的函数依赖.
判断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是否冗余.
设:G2={A→C,B→A,B→C,D→A,D→C,BD→A},得(A)G2+=C
∵A不属于(C)G2+ ∴ C→A不冗余
判断B→A是否冗余.
设:G3={A→C,C→A,B→C,D→A,D→C,BD→A},得(B)G3+=BCA
∵A属于(B)G3+ ∴ B→A冗余
判断B→C是否冗余.
设:G4={A→C,C→A,D→A,D→C,BD→A},得(B)G4+=B
∵C不属于(B)G4+ ∴ B→C不冗余
判断D→A是否冗余.
设:G5={A→C,C→A,B→C,D→C,BD→A},得(D)G5+=DCA
∵A不属于(D)G5+ ∴ D→A冗余
判断A→C是否冗余.
设:G6={A→C,C→A,B→C,BD→A},得(D)G6+=D
∵C不属于(D)G6+ ∴ D→C不冗余
判断BD→A是否冗余.
设:G7={A→C,C→A,B→C,D→C},得(BD)G7+=BDCA
∵A不属于(BD)G7+ ∴ BD→A冗余
综上所述:Fm={A→C,C→A,B→C,D→C}
(3)τ={AC,BC,DC,BD}。
5、将函数依赖集F分解为右边为单属性的函数依赖:
F={AB→E,BC→D,BE→C,CD→B,CE→A,CE→F,CF→B,CF→D,C→A,D→E,D→F}。
去掉F中冗余的函数依赖.
判断AB→E是否冗余.
设:G1={BC→D,BE→C,CD→B,CE→A,CE→F,CF→B,CF→D,C→A,D→E,D→F},得(AB)G1+=AB
∵E不属于(AB)G1+ ∴ AB→E不冗余
判断BC→D是否冗余.
设:G2={AB→E,BE→C,CD→B,CE→A,CE→F,CF→B,CF→D,C→A,D→E,D→F},得(BC)G2+=BCA
∵D不属于(BC)G2+ ∴ BC→D不冗余
判断BE→C是否冗余.
设:G3={AB→E,BC→D,CD→B,CE→A,CE→F,CF→B,CF→D,C→A,D→E,D→F},得(BE)G3+=BE
∵C不属于(BE)G3+ ∴ BE→C不冗余
判断CD→B是否冗余.
设:G4={AB→E,BC→D,BE→C,CE→A,CE→F,CF→B,CF→D,C→A,D→E,D→F},得(CD)G4+=CDAEFB
∵B属于(CD)G4+ ∴ CD→B冗余
判断CE→A是否冗余.
设:G5={AB→E,BC→D,BE→C,CD→B,CE→F,CF→B,CF→D,C→A,D→E,D→F},得(CE)G5+=CEFABD
∵A属于(CE)G5+ ∴ CE→A冗余
判断CE→F是否冗余.
设:G6={AB→E,BC→D,BE→C,CD→B,CE→A,CF→B,CF→D,C→A,D→E,D→F},得(CE)G6+=CEA
∵F不属于(D)G6+ ∴ CE→F不冗余
判断CF→B是否冗余.
设:G7={AB→E,BC→D,BE→C,CD→B,CE→A,CE→F,CF→D,C→A,D→E,D→F},得(CF)G7+=CFDABE
∵B属于(CF)G7+ ∴ CF→B冗余
判断CF→D是否冗余.
设:G7={AB→E,BC→D,BE→C,CD→B,CE→A,CE→F,CF→B,C→A,D→E,D→F},得(CF)G7+=CFDABE
∵D属于(CF)G7+ ∴ CF→D冗余
判断C→A是否冗余.
设:G7={AB→E,BC→D,BE→C,CD→B,CE→A,CE→F,CF→B,CF→D,D→E,D→F},得(C)G7+=C
∵A不属于(C)G7+ ∴ C→A不冗余
判断D→E是否冗余.
设:G7={AB→E,BC→D,BE→C,CD→B,CE→A,CE→F,CF→B,CF→D,C→A,D→F},得(D)G7+=DF
∵E不属于(D)G7+ ∴ D→E不冗余
判断D→F是否冗余.
设:G7={AB→E,BC→D,BE→C,CD→B,CE→A,CE→F,CF→B,CF→D,C→A,D→E},得(D)G7+=DF
∵F属于(D)G7+ ∴ D→F冗余
Fm={AB→E,BC→D,BE→C,CE→F,C→A,D→E}。
8、(1)关系中l类(只出现在左边)L=(IB)
关系中R类(只出现在右边)R=(DQ)
关系中LR类(两边都有)LR=(S)
关系中NLR类(两边都没有)NLR=(O)
NLR类O一定是侯选码的一部分。
(IB)的属性闭包为LBDQS
所以R的侯选码为IBO
(2) Fm={S→D,I→S,IS→Q,B→Q}
S→D不满足BCNF范式,把R分解为R11(SD),R12(BOISQ),F11(S→D),F12(I→S,IS→Q,B→Q);
IS→Q不满足BCNF范式,继续分解,R11(SD),R12(ISQ),R13(BOQ),F11(S→D),F12(I→S,IS→Q),F13(B→Q)。
则{R11,R12,R13}为最后结果。