Normalization

為什麼這不是 2NF 和 3NF 形式?

  • March 27, 2016

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。

為了正規化為R2NF,我們需要分解R

R1 = {A, C, D, F} 

R2 = {B, E}

R3 = {A, B}

現在,{A}is key forR1{B}is key for R2,並且它們沒有適當的子集(非空)。{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 中。

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