檢查給定關係中違反 3NF 的哪個 FD,並將 R 分解為 3NF(DBMS)


當一個關係滿足 2NF,並且不存在傳遞依賴時,該關係就滿足 3NF;或者說,當一個關係滿足 2NF,並且所有非鍵屬性都直接依賴於候選鍵時,該關係就滿足 3NF。

第三正規化 (3NF) 是資料庫規範化的第三步,它建立在第一正規化 (1NF) 和第二正規化 (2NF) 的基礎之上。

3NF 規定,應該移除所有在被引用資料中不依賴於主鍵的列引用。換句話說,只有外部索引鍵列應該用於引用另一個表,而父表中的其他列不應該存在於被引用表中。

問題

對於給定的關係 R(ABCDE) 和 F:{A→C,B→DE,D→C},檢查哪個 FD 違反了 3NF,並將 R 分解為 3NF。

解答

給定 F:{A→C,B→DE,D→C}

A+= AC => A 不是候選鍵

B+= BDEC => B 不是候選鍵

D+= DC => D 不是候選鍵

AB+=ACBDE => AB 是候選鍵

=> 鍵屬性 = A, B,非鍵屬性 = C, D, E。

A→C 違反 3NF [因為 A→C 是傳遞依賴]

B→DE 違反 3NF [因為 B→DE 是傳遞依賴]

D→C 違反 3NF [因為 D→C 是傳遞依賴]。

3NF 分解如下:

我們考慮違反 3NF 的 FD:

對於 A→C,R(ABCDE) 分解為 R1(AC) 和 R2(ABDE)。

對於 B→DE,R2(ABDE) 分解為 R3(BDEC) 和 R4(AB)。

對於 D→C,R3(BDEC) 分解為 R5(DC) 和 R6(BDE)。

=> 關係 R 的 3NF 分解是 R1(AC), R4(AB), R5(DC), R6(BDE)。

更新於:2021年7月6日

5K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.