Normalization
進展到 3NF
我的關係是:
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
?由於關係
H1
和H6
具有相同的密鑰,我可以將它們合併到嗎?感謝幫助
H2
並且H4
是完全相同的關係,因為屬性的順序無關緊要。一般來說,綜合算法要求,在第一階段之後,您應該刪除其他關係中包含的所有關係。所以,第一個問題的答案是肯定的,當然這個關係{B, C}
有兩個依賴B → C
和C → B
,和兩個候選鍵,B
和C
。另一方面,
H1
andH6
是不同的關係,不應該合併在一起(而且,它們沒有相同的鍵,因為H1
有 keyA
,而H6
有 key{A, D}
(並且沒有依賴關係))。