定義
例如:若關係模式R∈1NF( 即R符合第一範式),並且每一個非主屬性都完全依賴於R的主碼,則R∈2NF( 即R符合第二範式)。
所謂完全依賴是指不能存在僅依賴主關鍵字一部分的屬性,理解了完全依賴和部分依賴,就很容易理解第二範式,下面舉例說明一下。
例如以下實例中的關係模式,就是不符合2NF的一個典型例子。
示例
•不符合第二範式的例子
貨物類型 | 貨物ID | 貨物名稱 | 注意事項 |
瓷碗 | 1 | 白色瓷碗 | 易碎品 |
瓷碗 | 2 | 青花瓷碗 | 易碎品 |
瓷碗 | 3 | 雕花瓷碗 | 易碎品 |
三合板 | 1 | 普通三合板 | 易燃物品,注意防火 |
在該表中 主鍵為(貨物類型,貨物ID),貨物名稱欄位完全依賴於這個主鍵,換句話說,貨物的名稱完全是取決於這個主鍵的值的。但 “ 注意事項”這一列,僅依賴於一個主鍵中”貨物類型“這一個屬性。簡單地說,第二範式要求每個非主屬性完全依賴於主鍵,而不是僅依賴於其中一部分屬性。
那么,既然表中存在一個對主鍵不是完全依賴的欄位,那么我們就可以確定,該表不符合第二範式。
•符合第二範式的例子
貨物類型 | 貨物ID | 貨物名稱 |
瓷碗 | 1 | 白色瓷碗 |
瓷碗 | 2 | 青花瓷碗 |
瓷碗 | 3 | 雕花瓷碗 |
三合板 | 1 | 普通三合板 |
在該表中的主鍵依然是(貨物類型、貨物ID), 非主鍵欄位“貨物名稱”,完全依賴於這兩個主鍵,那么我們就可以說,該表是符合資料庫第二範式的。
轉換
採用投影分解法將一個1NF的關係分解為多個2NF的關係,可以在一定程度上減輕原1NF關係中存在的插入異常、刪除異常、數據冗餘度大、修改複雜等問題。
將一個1NF關係分解為多個2NF的關係,並不能完全消除關係模式中的各種異常情況和數據冗餘。
例:選課關係 SCI(SNO,CNO,GRADE,CREDIT)其中SNO為學號, CNO為課程號,GRADE 為成績,CREDIT 為學分。 由以上條件,關鍵字為組合關鍵字(SNO,CNO)
在套用中使用以上關係模式有以下問題:
a.數據冗餘,假設同一門課由40個學生選修,學分就 重複40次。
b.更新異常,若調整了某課程的學分,相應的元組CREDIT值都要更新,有可能會出現同一門課學分不同。
c.插入異常,如計畫開新課,由於沒人選修,沒有學號關鍵字,只能等有人選修才能把課程和學分存入。
d.刪除異常,若學生已經結業,從當前資料庫刪除選修記錄。某些門課程新生尚未選修,則此門課程及學分記錄無法保存。
原因:非關鍵字屬性CREDIT僅函式依賴於CNO,也就是CREDIT部分依賴組合關鍵字(SNO,CNO)而不是完全依賴。
解決方法:分成兩個關係模式 SC1(SNO,CNO,GRADE),C2(CNO,CREDIT)。新關係包括兩個關係模式,它們之間通過SC1中的外關鍵字CNO相聯繫,需要時再進行自然聯接,恢復了原來的關係。