哪個正規化是滿足函式依賴關係(DBMS)的最高正規化?
讓我們考慮依賴關係 F= {AB->CDEF, AF->ED, F->B},以下哪一項是表 R=ABCDEF 可以滿足的最高正規化。
從以下選項中選擇一個 -
- 不滿足任何正規化。
- Boyce-Codd 正規化
- 第一正規化
- 第二正規化
- 第三正規化
給定 F 的函式依賴關係如下 -
AB ---> CDEF
AF ---> ED
F ---> B
現在在 F 的函式依賴關係的 RHS(右側),屬性 B、C、D、E、F 都存在,但屬性 A 缺失。因此,屬性 A 必須是超鍵的一部分。
我們需要找到 A 的閉包 (A+),
A+ = 僅 A,因此單獨的屬性 A 不能成為鍵。因此,我們需要將 A 與 F 的其他屬性組合,然後找到 F 的候選鍵。
查詢 F 的候選鍵
AB+ = ABCDEF
AC+ = AC
AD+ = AD
AE+ = AE
AF+ = AFBCDE
現在由於 (AC、AD、AE) 的閉包沒有覆蓋 F 的所有屬性。因此,我們還需要組合 AC、AD、AE 來檢查它們的組合是否成為 F 的候選鍵。
所以 ACD+ = ACD
ACE+ = ACE
ADE+ = ADE
ACDE+ = ACDE
因此,最終,我們確認 AB 和 AF 是 F 的唯一候選鍵,因為它們的閉包覆蓋了 F 的所有屬性。
因此,F 的主屬性是 A、B、F,F 的非主屬性是 C、D、E。
檢查最高正規化 (NF)
我們將從最高的正規化開始,其中 BCNF 是最高的正規化,如果 F 處於 BCNF 正規化,那麼它也將處於 1NF、2NF 和 3NF。
檢查 BCNF
F 的所有函式依賴關係 X ---> Y,其中所有 X 必須是超鍵。
在 F 的所有函式依賴關係中,只有 AF 和 AB 是超鍵,但 F 不是超鍵。
(AB ---> CDE, AF ---> ED, F ---> B)
因此,F 不在 BCNF 中,因為 (X ---> Y) 的所有 X 都不是超鍵。
檢查 3NF
對於 F 處於 3NF,不應該出現非主屬性的傳遞函式依賴,或者說 F 中的任何非主屬性都不應該匯出到其他非主屬性。
並且在 F (X --> Y) 中,函式依賴關係的所有 X 都是主屬性,因為 AF、AB 是超鍵,並且 F 是主屬性。因此,沒有傳遞依賴關係的出現,因此它在 3NF 中。
並且 F 也在 2NF 中,因為沒有部分依賴關係,即候選鍵的任何部分都不會匯出到任何非主屬性。
如果 F 在 3NF 中,那麼它也在 2NF 和 1NF 中。因為 3NF 是其中最高的正規化。
結論
表 R(A,B,C,D,E) 滿足 3NF。