Normalization
為什麼這不是 2NF 和 3NF 形式?
R = {A, B, C, D, E, F}
依賴項:
{A} -> {C,F} {C} -> {D} {B} -> {E}
一種。這種關係是第一範式(NF)。解釋為什麼它不在 2nd NF 和 3rd NF 中。
灣。進行必要的調整以將關係轉換為 2nd NF。
C。進行必要的調整以將關係轉換為 3rd NF。
如果我理解正確,
{A}
決定{C,F}
,{C}
決定{D}
,所以{A}
決定{C, D, F}
也
{B}
決定了{E}
,總而言之,這意味著
{A, B}
唯一確定整行{A, B, C, D, E, F}
。因此,列{A, B}
是關係的關鍵R
。現在,如果非鍵欄位由鍵的適當子集確定(功能相關) ,則違反 2NF
{B} -> {E}
,這顯然是. 即僅鍵{A,B}的一部分就足以確定非鍵欄位{E}
。這會導致所有冗餘問題等,並違反 2NF。所以R
不是2NF。為了正規化為
R
2NF,我們需要分解R
為R1 = {A, C, D, F}
和
R2 = {B, E} R3 = {A, B}
現在,
{A}
is key forR1
和{B}
is key forR2
,並且它們沒有適當的子集(非空)。{A, B} 是 的鍵,R3
中沒有非鍵欄位R3
。因此,R1
,R2
,R3
在 2NF 中。如果一個非關鍵欄位在功能上依賴於另一個非關鍵欄位,**則違反 3NF 。**這就是
R1
我們有{A} -> {C}
和的情況{C} -> {D}
,這會導致違反 2NF 的類似問題。為了解決/規範這個問題,我們可以R1 = {A, C, D, F}
進一步分成:R11 = {A, C, F}
和
R12 = {C, D}
現在,很容易驗證
R11, R12, R2, R3
一起在 3NF 中。