设关系模式R(A,B,C,D),函数依赖集F={A→C,C→A,B→AC,D→AC,BD→A}1)求出R的候选码。2)求出F的最小函数依赖集。3)将R分解为3NF,使其既具有无损连接性又具有函数依赖保持性。
设关系模式R(A,B,C,D),函数依赖集F={A→C,C→A,B→AC,D→AC,BD→A}1)求出R的候选码。2)求出F的最小函数依赖集。3)将R分解为3NF,使其既具有无损连接性又具有函数依赖保持性。
正确答案:1)F={A→C,C→A,B→AC,D→AC,BD→A}。候选码:BD2)(1)单属性化F={A→C,C→A,B→A,B→C,D→A,D→C,BD→A}(2)无冗余化
A.C是否冗余?G1={C→A,B→A,B→C,D→A,D→C,BD→A}
A.G1闭包:=A,而C不属于{A},所以:A→C不冗余C→A是否冗余?G2={A→C,B→A,B→C,D→A,D→C,BD→A}C的G2闭包:=C,A不属于{C},所以:C→A不冗余B→A是否冗余?G3=F={A→C,C→A,B→C,D→A,D→C,BD→A}B的G3闭包:BCA,而A属于{BCA},所以:B→A冗余B→C是否冗余?G4={A→C,C→A,D→A,D→C,BD→A}B的G4闭包:=B,而C不属于{B},所以:B→C不冗余D→A是否冗余?G5={A→C,C→A,B→C,,D→C,BD→A}D的G5闭包:=DCA,而A属于{DCA},所以:D→A冗余。D→C是否冗余?G6={A→C,C→A,B→C,BD→A}D的G6闭包:=D,而C不属于{D},所以D→C不冗余BD→A是否冗余?G7=F={A→C,C→A,B→C,D→C}BD的G7的闭包=:BDCA,A属于该闭包,所以:BD→A冗余。既约化:由于依赖式子右边全部是单属性,故可以省略。Fmin={A→C,C→A,B→C,D→C}3)(1){A→C,C→A,B→C,D→C},(2)是否存在在F中有一个函数依赖X→A,且X∪A=U,无此情况。(3)把依赖集中的每一个依赖式子的属性组合,得到如下子模式:AC,BC,DC(4)BD加入(5)消去子集依赖:无子集依赖。最终分解为:T={AC,BC,DC,BD}解为:T={AC,BC,DC,BD}