例7設關係模式R(A,B,C,D),函數依賴集F={A->C,C->A,B->AC,D->AC,BD->A}.求F的最小函數依賴.
①將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(G1是F去掉A->C,求去掉A->C後A的閉包)
∵C不屬於(A)G1+ ∴ A→C不冗餘
判斷C→A是否冗餘.
設:G2={A→C,B→A,B→C,D→A,D→C,BD→A},得(C)G2+=C
∵A不屬於(C)G1+ ∴ C→A不冗餘
判斷B→A是否冗餘.
設:G3={A→C,C→A,B→C,D→A,D→C,BD→A},得(B)G3+=BCA (計算閉包方式:B->C,C->A,A->C)
∵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冗餘
判斷D→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}