應用資料庫 基礎

資料庫正規化是什麼?1NF、2NF、3NF 的差異?

AI 練習作答

資料庫正規化

目的

消除資料冗餘,減少更新異常(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 評分