第一范式(1NF)
每個屬性都是不可分的基本數據項.(必須有主鍵,列不可分)
eg:非第一范式的表:(列可再分)
| 學院名稱 | 高級職稱人數 | |
| 教授 | 副教授 | |
| 信電學院 | 3 | 34 |
| 管理學院 | 5 | 23 |
| 外語學院 | 3 | 12 |
滿足第一范式的表
| 學院名稱 | 教授 | 副教授 |
| 信電學院 | 3 | 34 |
| 管理學院 | 5 | 23 |
| 外語學院 | 3 | 12 |
第二范式(2NF)
1NF基礎上消除部分函數依賴, 消除數據冗余和增、刪、改異常。
每個非主屬性都完全函數依賴於主鍵
2NF關系舉例:
不滿足2NF的關系:
(學號, 課程名稱) → (姓名, 年齡, 成績, 學分)
滿足2NF的關系:
(完全函數依賴:在關系模式R(u)中,X,Y是U的子集,Y函數依賴於X 並且 Y非函數依賴於X的子集,則稱Y完全函數依賴於X。X f >Y)
(部分函數依賴:在關系模式R(u)中,X,Y是U的子集,Y函數依賴於X 並且 Y函數依賴於X的子集)
(函數依賴:某個屬性集決定另一個屬性集時,例如學生學號屬性集Sno決定學生姓名屬性集Sname,稱Sname函數依賴於Sname )
(平凡函數依賴:Y函數依賴於X,並且Y包含於X,例如(Sno)->(Sno)、(Sno、Sname)->(Sno))
(非平凡函數依賴:Y函數依賴於X,並且Y不包含於X,例如(Sno,Sname)->(Ssex))
第三范式(3NF)
2NF基礎上消除傳遞函數依賴,屬性集直接依賴於主鍵。
非第三范式表(Sno->BounsLevel,BounsLevel->BounsMoney)
| Sno | Sname | Sage | BounsLevel | BounsMoney |
| 1 | Carrie | 21 | A | 2000 |
| 2 | Cherry | 20 | B | 1500 |
第三范式表:(消除傳遞函數依賴)
| Sno | Sname | Sage | Bno |
| 1 | Carrie | 21 | 1 |
| 2 | Cherry | 20 | 2 |
| Bno | BounsLevel | BounsMoney |
| 1 | A | 2000 |
| 2 | B | 1500 |
(傳遞函數依賴:Y函數依賴於X,Z函數依賴於Y,且X不包含Y,X非函數依賴於Y,則稱Z傳遞函數依賴於X。X t >Z)
鮑依斯-科得(巴斯)范式(BCNF)
3NF基礎上消除主屬性依賴,即不存在關鍵字段決定關鍵字段的情況。
(非主屬性 :不包含在主碼中的屬性稱為非主屬性。)
反例:(SID->GID,GID->SID存在關鍵字決定關鍵字的情況)
| SID(倉庫ID) |
GoodsID(商品ID) |
MID(管理員ID) |
GoodsNum(商品數量) |
| 001 |
20170510 |
1 |
200 |
符合BCNF
| StoreHouseID(倉庫ID) |
GoodsID(商品ID) |
GoodsNum(商品數量) |
| 001 |
20130104 |
200 |
| StoreHouseID(倉庫ID) |
ManagerID(管理員ID) |
| 001 |
1 |
