應用資料庫 基礎
資料庫正規化是什麼?1NF、2NF、3NF 的差異?
資料庫正規化
目的
消除資料冗餘,減少更新異常(Update Anomaly)、插入異常(Insert Anomaly)、刪除異常(Delete Anomaly)
第一正規化(1NF)
- 每個欄位只含原子值(不可再分割)
- 不允許重複欄位或陣列型欄位
- 例:把
phone1, phone2, phone3拆成獨立的phones表
第二正規化(2NF)
- 滿足 1NF
- 非主鍵欄位必須完全依賴複合主鍵(消除部分依賴)
- 例:
訂單明細(訂單ID, 商品ID, 商品名稱)→ 商品名稱只依賴商品ID,應拆出
第三正規化(3NF)
- 滿足 2NF
- 非主鍵欄位之間不能有傳遞依賴
- 例:
員工(ID, 部門ID, 部門名稱)→ 部門名稱依賴部門ID而非員工ID,應拆出
反正規化(Denormalization)
為了查詢效能,有時故意冗餘資料(如快取計算結果)
- 正規化 → 減少冗餘,利於寫入
- 反正規化 → 增加冗餘,利於讀取(减少 JOIN)
面試加分:OLTP(交易型)系統通常 3NF,OLAP(分析型)系統常用反正規化的星型(Star Schema)或雪花型(Snowflake Schema)。
✦ AI 模擬面試
輸入你的答案,AI 即時分析精準度與改進空間
登入後即可使用 AI 評分
