5NF ⊂ 4NF ⊂ BCNF ⊂ 3NF ⊂ 2NF ⊂ 1NF

每個欄位皆為不可再分的原子值,滿足關係型資料庫最低要求。
在 1NF 基礎上,消除非主屬性對碼的部分函數相依(即非主屬性必須完全函數相依於候選碼)。
在 2NF 基礎上,消除非主屬性對碼的傳遞函數相依(非主屬性不依賴於其他非主屬性)。
嚴格版 3NF:任何決定因素必須是候選碼,消除主屬性對碼的部分與傳遞相依。
原則:開發階段盡量遵循 3NF,保證資料一致性、減少冗餘異常。
妥協:高頻查詢場景下,3NF 導致多表 JOIN 過多,嚴重拖慢查詢效能。此時可適度反範式化:引入冗餘欄位、物化視圖、匯總表等,以空間換時間。
| 場景 | 建議策略 |
|---|---|
| 核心交易表、高寫入場景 | 嚴格 3NF,確保 ACID |
| 報表/分析查詢、大量 JOIN | 適度冗餘、建立匯總表 |
| 頻繁讀取的配置/字典表 | 全量快照、應用層緩存 |
記住:沒有銀彈,只有權衡。每一次反範式化都要有明確的效能基準測試支撐,並建立資料同步修復機制。