一、三大範式通俗解釋:
(1)簡單歸納:
第一範式(1NF):字段不可分;
第二範式(2NF):有主鍵,非主鍵字段依賴主鍵;
第三範式(3NF):非主鍵字段不能相互依賴。
(2)解釋:
1NF:原子性。 字段不可再分,否則就不是關係數據庫;;
2NF:唯一性 。一個表只說明一個事物;
3NF:每列都與主鍵有直接關係,不存在傳遞依賴。
二、例子說明
(1)不符合第一字段的例子
表:字段1, 字段2(字段2.1,字段2.2), 字段3
字段2可以拆分成字段2.1和字段2.2,不符合第一範式。
(2)不符合第二範式的例子
表:學號, 姓名, 年齡, 課程名稱, 成績, 學分
這個表明顯說明了兩個事務:學生信息, 課程信息。
1)存在以下問題:
a、數據冗餘:每條記錄都含有相同信息;
b、刪除異常:刪除所有學生成績,就把課程信息全刪除了;
c、插入異常:學生未選課,無法記錄進數據庫;
d、更新異常:調整課程學分,所有行都調整。
2)修正:
學生表:學號, 姓名, 年齡
課程表:課程名稱,學分
選課關係表:學號, 課程名稱, 成績
(3)不符合第三範式的例子
表:學號, 姓名, 年齡, 所在學院, 學院聯繫電話
其中關鍵字爲單一關鍵字"學號"。存在依賴傳遞::(學號) → (所在學院) → (學院聯繫電話) 。
1)存在問題::
a、數據冗餘:有重複值;
b、更新異常:有重複的冗餘信息,修改時需要同時修改多條記錄,否則會出現數據不一致的情況
c、刪除異常
2)修正:
學生表:學號, 姓名, 年齡, 所在學院;
學院表:學院, 電話