Normalization

進展到 3NF

  • February 12, 2017

我的關係是:

H = {A,B,C,D,E}
A -> C
{A,D} -> E
B -> C
{B,D} -> E
C -> B
E -> C

我必須將此關係轉換為 3NF。候選鍵:{A,D}

第一步是最小化。在最小化中,我可以{A,D} -> E退出 fds。

H = {A,B,C,D,E}
A -> C
B -> C
{B,D} -> E
C -> B
E -> C

分解:

H1 = {A,C} with key A
H2 = {B,C} with key B and FD: B -> C
H3 = {B,D,E} with key {B,D}
H4 = {C,B}  with key C and FD: C ->B
H5 = {E,C} with key E
H6 = {A,D} with key A // added because one relation must contains key

當我看到H2和H4時我很困惑。它們看起來幾乎相似。那麼,應該將兩者合二為一嗎?要獲得一種關係:

H2 = {B,C} with keys {B},{C} and fds: B -> C, C -> B?

由於關係H1H6具有相同的密鑰,我可以將它們合併到嗎?

感謝幫助

H2並且H4是完全相同的關係,因為屬性的順序無關緊要。一般來說,綜合算法要求,在第一階段之後,您應該刪除其他關係中包含的所有關係。所以,第一個問題的答案是肯定的,當然這個關係{B, C}有兩個依賴B → CC → B,和兩個候選鍵,BC

另一方面,H1andH6是不同的關係,不應該合併在一起(而且,它們沒有相同的鍵,因為H1有 key A,而H6有 key {A, D}(並且沒有依賴關係))。

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