-
第二範式
鎖定
- 中文名
- 第二範式
- 外文名
- 2NF
- 別 名
- 第二正規化(台灣)
- 所屬學科
- 數據庫
第二範式定義
例如以下實例中的關係模式,就是不符合2NF的一個典型例子。
第二範式示例
- 不符合第二範式的例子
貨物類型 | 貨物ID | 貨物名稱 | 注意事項 |
瓷碗 | 1 | 白色瓷碗 | 易碎品 |
瓷碗 | 2 | 青花瓷碗 | 易碎品 |
瓷碗 | 3 | 雕花瓷碗 | 易碎品 |
三合板 | 4 | 普通三合板 | 易燃物品,注意防火 |
在該表中主鍵為(貨物類型,貨物ID),貨物名稱字段完全依賴於這個主鍵,換句話説,貨物的名稱完全是取決於這個主鍵的值的。但“注意事項”這一列,僅依賴於一個主鍵中”貨物類型“這一個屬性。簡單地説,第二範式要求每個非主屬性完全依賴於主鍵,而不是僅依賴於其中一部分屬性。
那麼,既然表中存在一個對主鍵不是完全依賴的字段,那麼我們就可以確定,該表不符合第二範式。
- 符合第二範式的例子
貨物類型 | 貨物ID | 貨物名稱 |
瓷碗 | 1 | 白色瓷碗 |
瓷碗 | 2 | 青花瓷碗 |
瓷碗 | 3 | 雕花瓷碗 |
三合板 | 4 | 普通三合板 |
在該表中的主鍵依然是(貨物類型、貨物ID),非主鍵字段“貨物名稱”,完全依賴於這兩個主鍵,那麼我們就可以説,該表是符合數據庫第二範式的。
第二範式轉換
將一個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)而不是完全依賴。