八、資料庫的歸約,三大正規化(規範資料庫設計)

十四2001發表於2024-08-01

資料庫的歸約,三大正規化(規範資料庫設計)

為什麼要設計

糟糕的資料庫設計:

  • 資料冗餘,浪費空間
  • 資料庫插入和刪除都會麻煩、異常【遮蔽使用物理外來鍵】
  • 程式效能差

良好的資料庫設計:

  • 節省記憶體空間
  • 保證資料庫的完整性
  • 方便我們開發

軟體開發中,關於資料庫的設計

  • 分析需求:分析業務和需要處理的資料庫的需求
  • 概要設計:設計關係圖E-R圖

設計資料庫的步驟:(個人部落格)

  • 收集資訊,分析需求
    • 使用者表(使用者登入登出、使用者的個人資訊,寫部落格,建立分類)
    • 分類表(文章分類,誰建立的)
    • 文章表(文章的資訊)
    • 友連結串列(友鏈資訊)
    • 評論表
    • 自定義表(系統資訊、某個關鍵的字、一些主欄位) key:value
  • 標識實體(把需求落實到每個欄位)
  • 標識實體 之間的關係
    • 寫部落格:user --> blog
    • 建立分類:user --> category
    • 關注:user --> user

三大正規化

為什麼需要資料規範化

  • 資訊重複
  • 更新異常
  • 插入異常
    • 無法正常顯示資訊
  • 刪除異常
    • 丟失有效資訊

三大正規化(規範資料庫的設計)

第一正規化(1NF)

原子性:保證每一列不可再分

第二正規化(2NF)

前提:滿足第一正規化

每張表只描述一件事情

第三正規化(3NF)

前提:滿足第二正規化

第三正規化需要確保資料表中的每一列資料都和主鍵直接相關,而不能間接相關。

規範性 和 效能 的問題

關聯查詢的表不得超過三張表

  • 考慮商業化的需求和目標,(成本、使用者體驗)資料庫的效能更重要
  • 在規範和效能的問題上,適當考慮一下 規範性
  • 故意給某些表增加一些冗餘欄位(多表查詢變為單表查詢)
  • 故意增加一些計算列(從大資料量降低為小資料量的查詢:索引)

相關文章