關聯式資料庫設計必遵循範式規範。本文系統介紹 1NF~BCNF 定義、違反後果、分解方法與實務取捨。
每個屬性值為最小資料單位。例:員工一筆記錄含「公司電話、住宅電話」違反 1NF。
實務採 2 或 3。
例:選課關係 SC(SNO, CNO, GRADE, CREDIT),鍵 (SNO, CNO)。
CREDIT 僅依賴 CNO (部分依賴) → 違反 2NF。
分解:SC1(SNO, CNO, GRADE)、C2(CNO, CREDIT),外鍵 CNO 關聯。
例:S1(SNO, SNAME, DNO, DNAME, LOCATION),鍵 SNO。
SNO → DNO → LOCATION 存在傳遞依賴 → 違反 3NF。
分解:S(SNO, SNAME, DNO)、D(DNO, DNAME, LOCATION),保留外鍵 DNO 維持關聯。
例:配件管理 WPE(WNO, PNO, ENO, QNT)。
條件:ENO → WNO、(WNO, PNO) → ENO、(ENO, PNO) → QNT。
候選鍵:(WNO, PNO)、(ENO, PNO)。主屬性 ENO, WNO, PNO。
雖符合 3NF,但 ENO → WNO 導致主屬性傳遞依賴候選鍵 (ENO, PNO) → 違反 BCNF。
分解:EP(ENO, PNO, QNT) 鍵 (ENO, PNO)、EW(ENO, WNO) 鍵 ENO。
函數依賴 (WNO, PNO) → ENO 丟失,語義「每倉庫每配件專人負責」無法由結構約束,需觸發器補足。
BCNF ⊃ 3NF ⊃ 2NF ⊃ 1NF
高階 4NF/5NF 處理多值/連接依賴,俟後續介紹。