數據庫結構優化的目的
- 減少數據冗餘
- 避免數據維護中出現更新、插入和刪除異常
- 插入異常:如果表中的某個實體隨着另一個實體而存在
- 更新異常:如果更新表中的某個實體的單獨屬性時,需要對多行進行更新
- 刪除異常:如果刪除表中的某一實體則會導致其他實體的消失
- 節約數據存儲空間
- 提供查詢效率
數據庫結構設計的步驟
- 需求分析:全面瞭解產品設計的存儲需求,數據處理需求,數據的安全性和完整性
- 邏輯設計:設計數據的邏輯存儲結構,數據實體之間的邏輯關係,解決數據冗餘和數據維護異常
- 物理設計:根據所使用的數據庫特點進行表結構設計
- 維護優化:根據實際情況對索引、存儲結構等進行優化
數據庫設計三範式
- 第一範式:
- 數據庫表中的所有字段都只具有單一屬性
- 單一屬性的列是由基本的數據類型所構成的
- 設計出來的表都是簡單的二維表
- 第二範式:
要求一個表中只具有一個業務主鍵,也就是說不能存在非主鍵列只對部分主鍵的依賴關係
- 第三範式:
指每一個非主屬性既不部分依賴於也不傳遞依賴於業務主鍵,也就是在第二範式的基礎上消除了非主屬性對主鍵的傳遞依賴
範式化設計
優點:
* 可以儘量的減少數據冗餘
* 更新操作比反範式化更快
* 表通常比反範式化更小
缺點:
* 對於查詢需要對多個表進行關聯
* 更難進行索引優化
反範式化設計
優點:
* 可以減少表的關聯
* 更好的進行索引優化
缺點:
* 存在數據冗餘及數據維護異常
* 對數據的修改需要更多的成本