MySQL數(shù)據(jù)庫設計

一、為什么需要設計

當數(shù)據(jù)庫比較復雜,我們就需要設計
糟糕的數(shù)據(jù)庫設計:

  • 數(shù)據(jù)冗余,浪費空間
  • 數(shù)據(jù)庫插入和刪除都會麻煩
  • 程序的性能差

良好的數(shù)據(jù)庫設計:

  • 節(jié)省內(nèi)存空間
  • 保證數(shù)據(jù)庫的完整性
  • 方便我們開發(fā)系統(tǒng)

軟件開發(fā)中,關(guān)于數(shù)據(jù)庫的設計

  • 分析需求:分析業(yè)務和需要處理的數(shù)據(jù)庫需求
  • 概要設計:設計關(guān)系圖ER圖

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

  • 收集信息,分析需求
    (1)用戶表(用戶登錄注銷,用戶的個人信息,寫博客,創(chuàng)建分類)
    (2)分類表(文章分類,誰創(chuàng)建的)
    (3)文章表(文章信息)
    (4)評論表
    (5)友鏈表(友鏈信息)
    (6)自定義表(系統(tǒng)信息,某個關(guān)鍵的字或者一些主題)
    (7)說說表
  • 標識實體類(把需求落地到每個字段)
  • 標識實體間的關(guān)系
    (1)寫博客:user-->blog
    (2)創(chuàng)建分類:user-->categary
    (3)關(guān)注:user-->user
    (3)友鏈:links
    (4)評論:user-user-blog

二、三大范式

為什么需要數(shù)據(jù)規(guī)范化

  • 信息重復
  • 更新異常
  • 插入異常
  • 刪除異常

三大范式

第一范式(1NF)
原子性:保證每一列不可再分
第二范式(2NF)
前提:滿足第一范式
每張表只描述一件事情
第三范式(3NF)
前提:滿足第一范式、第二范式
第三范式確保數(shù)據(jù)表中的每一列數(shù)據(jù)都和主鍵直接相關(guān)

規(guī)范和性能
關(guān)聯(lián)查詢不能超過三張表

  • 考慮商業(yè)化的需求和目標(成本,用戶體驗)性能更重要
  • 在規(guī)范性能問題的時候,需要適當?shù)目紤]規(guī)范性!
  • 故意會某些表增加一些冗余字段(多表轉(zhuǎn)單表)
  • 故意增加計算列(將大數(shù)據(jù)量降低為小數(shù)據(jù)量的查詢)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容