Normalization
從 2nf 到 bcnf 的標準化
這是教科書上的問題
Consider the Relation R={A, B, C, D, E, F, G, H } and the set of functional dependencies. A→C B→CG AD→EH C→DF A→H What is the key for R? Decompose R into 2NF, 3NF and finally in BCNF relation
我相信
A B
是候選鍵。我已經像這樣將 R 分解為 2nf:
R1={A,C,H,D,F,E,H} R2={B,C,G,D,G,F} R3={A,B}
對於 3nf:
R1A={A,C,H} R1B={C,D,F} R2={B,C,G} R3={A,B} R4={A,D,E}
我的問題
這顯然看起來不正確,因為我們仍然有多個異常並且與轉換為 bcnf 沒有關係。我應該如何正確標準化 R
要在 3NF 中規範化,應該從功能依賴的規範覆蓋開始。在這種情況下,一個是:
{ A → C A → E A → H B → C B → G C → D C → F }
所以使用“綜合”算法在 3NF 中的分解是:
R1 < (A C E H) , { A → C E H } > R2 < (B C G) , { B → C G } > R3 < (C D F) , { C → D F } > R4 < (A B) , { } >
從 R 開始,使用“分析”算法的 BCNF 中可能的分解是:
R1 < (B G) , { B → G } > R2 < (A B) , { } > R3 < (C D F) , { C → D C → F } > R4 < (A C E H) , { A → C A → E A → H } >
請注意,通過這種分解,依賴性
B → C
會失去。