第一范式(1NF):強調的是列的原子性,即“列不能夠再分成其他幾列”,同一列中不能有多個值。
例子:業余愛好編碼表+員工編碼表
當員工楊來的業余愛好有多個時,此時的數據庫設計不滿足第一范式,可進行如下的修改,把員工編碼表中的“業余愛好”拿出來單獨建表,建立業余愛好表,此時可滿足1個員工有多個愛好。
第二范式(2NF):首先是 1NF,另外包含兩部分內容,一是表必須有一個主鍵;二是沒有包含在主鍵中的列必須完全依賴於主鍵,而不能只依賴於主鍵的一部分,“也就是一個表只能保存一種數據”。
例子:此表中有商品信息、訂單信息
可修改為:
第三范式(3NF):首先是 2NF,另外非主鍵列必須直接依賴於主鍵,不能存在傳遞依賴。即不能存在:非主鍵列 A 依賴於非主鍵列 B,非主鍵列 B 依賴於主鍵的情況。
客戶名稱依賴於客戶編號,客戶編號作為訂單信息表的外鍵,客戶編號依賴於訂單編號,所以存在間接依賴
可改為: