Normalization

從 2nf 到 bcnf 的標準化

  • December 15, 2021

這是教科書上的問題

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會失去。

引用自:https://dba.stackexchange.com/questions/303944