|
既使關系模式是1NF。但很可能具有不受歡迎的冗余和異常現象。因此需把關系模式作進一步的規范化。 如果關系模式中存在局部依賴,就不是一個好的模式,需要把關系模式分解,以排除局部依賴,使模式達到2NF的標準。具體定義如下。 |
1.定義 對于函數依賴W→A,如果存在X W有X→A成立,那么稱W→A是局部依賴(A局部依賴于W);否則稱W→A是完全依賴。完全依賴也稱為“左部不可約依賴”。 |
2.定義 如果A是關系模式R的候選鍵中屬性,那么稱A是R的主屬性;否則稱A是R的非主屬性。 |
3.定義 如果關系模式R是1NF,且每個非主屬性完全函數依賴于候選鍵,那么稱R是第二范式(2NF)的模式。如果數據庫模式中每個關系模式都是2NF,則稱數據庫模式為2NF的數據庫模式。 |
4.不滿足2NF的關系模式中必定存在非主屬性對關鍵碼的局部依賴
|
5.實例
(1)問題:設關系模式R(S#,C#,SCORE,T#,TITLE)的屬性分別表示學生學號、選修課程的編號、成績、任課教師工號和教師職稱等意義。 (2)(S#,C#)是R的候選鍵。 (3)R上有兩個FD ①(S#,C#)→(SCORE) ②C#→(T#,TITLE) (4)R不是2NF模式 ①C#→(T#,TITLE)的FD是局部依賴 (5)存在問題 ①此時R的關系就會出現冗余和異常現象。 ②譬如某一門課程有100個學生選修,那么在關系中就會存在100個元組,因而教師的工號和職稱就會重復100次。 |
(6)分解
①如果把R分解成R1(C#,T#,TITLE)和R2(S#,C#,SCORE)。 ②R1的鍵是C#,函數依賴C#→(T#,TITLE)是完全依賴。 ③R1和R2則都是2NF模式。 |
6.分解成2NF模式集的算法 ①設關系模式R(U),主鍵是W,R上還存在函數依賴X→Z,并且Z是非主屬性和X W,那么W→Z就是一個局部依賴。此時應把R分解成兩個模式。 ②R1(XZ),主鍵是X。 ③R2(Y),其中Y=U-Z,主鍵仍是W,外鍵是X(參照R1)。 ④利用外鍵和主鍵的連接可以從R1和R2重新得到R。 ⑤如果R1和R2還不是2NF,則重復上述過程,一直到數據庫模式中每一個關系模式都是2NF為止。 |