當資料庫比較複雜的時候,就需要設計
糟糕的資料庫設計
良好的資料庫設計
設計資料庫的步驟(以個人部落格為例):
正規化(資料庫設計正規化,資料庫的設計正規化)是符合某一種級別的關係模式的集合。構造資料庫必須遵循一定的規則。在關聯式資料庫中,這種規則就是正規化。關聯式資料庫中的關係必須滿足一定的要求,即滿足不同的正規化。
為什麼需要資料規範化
防止:
三大正規化
第一規格化(1NF)
原子性:保證每一列不可再分
說明:在任何一個關聯式資料庫中,第一規格化(1NF)是對關係模式的基本要求,不滿足第一規格化(1NF)的資料庫就不是關聯式資料庫。
第二正規化(2NF)
前提:滿足第一規格化
第二正規化需要確保資料庫表中的每一列都和主鍵相關,而不能只與主鍵的某一部分相關
第三正規化(3NF)
前提:滿足第一規格化,第二正規化
第三正規化需要確保資料表中的每一列資料都和主鍵直接相關,而不能間接相關,第三正規化就是屬性不依賴於其它非主屬性
思考:規範性和效能的問題
反正規化化
反正規化化指的是通過增加冗餘或重複的資料來提高資料庫的讀效能。
反正規化化可以減少關聯查詢時,join表的次數。
關聯查詢的表不得超過三張 (參考阿里巴巴開發手冊)