1NF:屬性單一,不可再分(僅一個值僅一種值)
很顯然,在當(dāng)前的任何RDBMS中,傻瓜也不可能做出不符合第一范式的數(shù)據(jù)庫,因為RDBMS不允許你把數(shù)據(jù)庫表的一列再分成二列或多列。實際上,還真有這樣的垃圾設(shè)計,我在某個項目中遇到,將 first_name,middle_name,last_name放在一個字段的,最后想分都分不開,完全折服。
2NF:消除了部分依賴(部分依賴由復(fù)合主鍵導(dǎo)致,顯然所有單主鍵的表都符合2NF)
<反例> 一個表
(學(xué)號, 課程名稱)→(姓名, 年齡, 成績, 學(xué)分)
<部分依賴>
(課程名稱)→(學(xué)分)
(學(xué)號)→(姓名, 年齡)
<改正> 改為三個表
(學(xué)號)→(姓名, 年齡)
(課程名稱)→(學(xué)分)
(學(xué)號,課程名稱)→(成績)
3NF:消除了傳遞依賴
<反例>
(學(xué)號)→(姓名, 年齡, 學(xué)院, 學(xué)院地點, 學(xué)院電話)
<傳遞依賴>
(學(xué)號)→(學(xué)院)→(學(xué)院地點, 學(xué)院電話)
<改正> 改為兩個表
(學(xué)號)→(姓名,年齡,學(xué)院)
(學(xué)院)→(地點,電話)