規範數據庫設計
糟糕的數據庫設計 :
- 數據冗餘,存儲空間浪費
- 數據更新和插入的異常
- 程序性能差
良好的數據庫設計 :
- 節省數據的存儲空間
- 能夠保證數據的完整性
- 方便進行數據庫應用系統的開發
軟件項目開發週期中數據庫設計 :
- 需求分析階段: 分析客戶的業務和數據處理需求
- 概要設計階段:設計數據庫的E-R模型圖 , 確認需求信息的正確和完整.
設計數據庫步驟
-
收集信息
-
與該系統有關人員進行交流 , 座談 , 充分了解用戶需求 , 理解數據庫需要完成的任務.
-
標識實體[Entity]
-
標識數據庫要管理的關鍵對象或實體,實體一般是名詞
-
標識每個實體需要存儲的詳細信息[Attribute]
-
標識實體之間的關係[Relationship]
三大範式
1.爲什麼需要數據規範化?
不合規範的表設計會導致諸多問題,可以避免:
-
信息重複
-
更新異常
-
插入異常
-
無法正常顯示信息。
-
刪除異常
-
丟失有效的信息。
2.三大範式:
第一範式(1NF)
保證原子性,即每一列都不可再分割。
第二範式(2NF)
前提:滿足第一範式
每張表值描述一個事情。
第三範式(3NF)
前提:滿足第一範式 和 第二範式第三範式要求確保數據表中每一列數據都和主鍵直接相關,不能間接相關。
3.規範性和性能問題
關聯查詢表一般不超過3張表
-
需要考慮商業化需求和目標(Eg:耗時,用戶體驗,性能等)
-
在規範性能的問題上,需要適當考慮規範性的問題。
-
偶爾給某些表增加一些冗餘字段,可以使表格從多表查詢改爲單表查詢。
-
專門增加一些計算列(從大數據量轉變爲小數據量的查詢)
規範化和性能的關係
爲滿足某種商業目標 , 數據庫性能比規範化數據庫更重要在數據規範化的同時 , 要綜合考慮數據庫的性能通過在給定的表中添加額外的字段,以大量減少需要從中搜索信息所需的時間通過在給定的表中插入計算列,以方便查詢
參考文獻
《【狂神說Java】MySQL最新教程通俗易懂》
視頻連接:https://www.bilibili.com/video/BV1NJ411J79W
《狂神說MySQL07:權限及如何設計數據庫》
原文連接
2020.05.24