MySQL Day09 規範數據庫設計與三大範式

MySQL 規範數據庫設計

1 爲什麼需要設計

糟糕的數據庫設計:

  • 數據冗餘,浪費空間

  • 數據插入和刪除都會麻煩,可能產生異常,儘量不要使用物理外鍵

  • 程序的性能差

良好的數據庫設計:

  • 節省內存空間
  • 保證數據庫的完整性
  • 方便我們開發系統

軟件開發中關於數據庫的設計:

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

設計數據庫的步驟:(個人博客)

  1. 收集信息,分析需求

    • 用戶表(用戶登陸註銷,用戶的個人信息,寫博客,創建分類)
    • 分類表(文章分類,誰創建的)
    • 文章表(文章信息)
    • 友情鏈接表(友鏈信息)
    • 自定義表(系統信息,某個關鍵的字,或者一些主字段) key:value
  2. 標識實體(把需求落地到每個字段)

    依照以上需求,設計的數據庫在以下圖片中展示!

  3. 標識實體之間的關係

    • 寫博客:user -> blog
    • 創建分類:user -> category
    • 關注:user -> user
    • 友鏈: links
    • 評論: user -> user-blog

數據庫展示:

user表:

在這裏插入圖片描述

category表:

在這裏插入圖片描述

blog表:

在這裏插入圖片描述

links表:

在這裏插入圖片描述

comment表:

在這裏插入圖片描述
user_follow表:

在這裏插入圖片描述

2 三大範式

使用範式是爲了避免以下問題:

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

三大範式

三大範式用來規範數據庫的設計。

  1. 第一範式(1NF)

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

  1. 第二範式(2NF)

前提:滿足第一範式

每張表只描述一件事情

  1. 第三範式(3NF)

前提:滿足第一和第二範式

確保數據表中的每一列數據都和主鍵直接相關,而不能間接相關。

規範性和性能的問題

阿里規範:關聯查詢的表不得超過三張表

  • 考慮商業化的需求和目標(成本,用戶體驗!)數據庫的性能更加重要
  • 在規範性能的問題時,需要適當的考慮規範性!
  • 有時需要故意給某些表增加一些冗餘的字段。(從多表查詢變爲單表查詢)
  • 故意增加一些計算列(從大數據量降低爲小數據量的查詢:索引)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章