9、规范数据库设计
9.1 為什么需要設計
當數據庫比較復雜的時候,我們就需要設計了
糟糕的數據庫設計:
-
數據冗余,浪費空間
-
數據庫插入和刪除都會麻煩,異常【屏蔽使用物理外鍵】
-
程序的性能差
良好的數據庫設計:
-
節省內存空間
-
保證數據庫的完整性
-
方便我們開發系統
軟件開發中,關于數據庫的設計:
- 分析需求:分析業務和需要處理的數據庫的需求
- 概要設計:設計關系圖 E-R圖
設計數據庫的步驟(個人博客)
-
收集信息,分析需求
- 用戶表(用戶登錄注銷,用戶的個人信息,寫博客,創建分類)
- 分類表(文章分類,誰創建的)
- 文章表(文章的信息)
- 友鏈表(友鏈信息)
- 自定義表(系統信息,某個關鍵的字,或者某些主字段)
- 說說表(發表心情…id ,content ,time)
-
標識實體(把需求落地到每個字段)
-
標識實體之間的關系
- 寫博客 user–>blog
- 創建分類 user–>category
- 關注 user–>user
- 友鏈 links
- 評論 user–user-blog
9.2 三大范式
為什么需要數據規范化?
- 信息重復
- 更新異常
- 插入異常
- 刪除異常
- 無法正常顯示異常
- 刪除異常
- 丟失有效的信息
三大范式:https://www.cnblogs.com/wsg25/p/9615100.html
-
第一范式(1NF)
原子性:保證每一列不可再分
-
第二范式(2NF)
前提:滿足第一范式
每張表只描述一件事情
-
第三范式(3NF)
前提:滿足第一范式和第二范式
第三范式需要確保數據表中的每一列數據都和主鍵直接相關,而不能間接相關。
9.3 規范數據庫的設計
規范性 和 性能的問題
關聯查詢的表,不得超過三張表
- 考慮商業化的需求和目標(成本和用戶體驗) 數據庫的性能更加重要
- 再規范性能的問題的時候,需要適當的考慮一下,規范性
- 故意給某些表加一些冗余的字段(從多表,變成單表)
- 故意增加一些計算列(從大數據量降低為小數據量的查詢:索引)
總結
- 上一篇: Kernel space lock co
- 下一篇: Mysql保存emoji表情