MySQL之規範資料庫設計

Ping開源發表於2020-12-05

九、規範資料庫設計

1.為什麼需要設計?

1)糟糕的資料庫設計
①資料冗餘,浪費空間。
②資料庫插入和刪除都會很麻煩、出現異常(遮蔽使用物理外來鍵)。
③程式的效能差。
2)良好的資料庫設計
①節省記憶體空間。
②保證資料庫的完整性。
③方便開發系統。
3)軟體開發中,關於資料庫的設計
①分析需求:分析業務和需要處理的資料庫需求。
②設計概要:設計關係圖E-R圖。
4)設計資料庫的步驟以個人部落格為例
①收集資訊,分析需求。
Ⅰ使用者表(使用者登入登出、使用者的個人資訊、寫部落格、建立分類)
Ⅱ分類表(文章分類、誰建立的)
Ⅲ文章表(文章的資訊)
Ⅳ友連結串列(友鏈資訊)
Ⅴ自定義表(系統資訊、某個關鍵字或一些主欄位)
②標識實體(把需求落實到每個欄位)。
③標識實體之間的關係。
Ⅰ寫部落格:user——>blog
Ⅱ建立分類:user——>category
Ⅲ關注:user——>user
Ⅳ友鏈:links
Ⅴ評論:user——>user——>blog

2.三大正規化

為什麼需要資料規範?
不規範可能造成的問題:資訊重複、更新異常、插入異常(無法正常顯示資訊)、刪除異常(丟失有效資訊)
1)第一正規化(1NF)
原子性:保證每一列不可再分。
2)第二正規化(2NF)
前提:滿足第一正規化。
每張表只描述一件事情。
3)第三正規化(3NF)
前提:滿足第一正規化和第二正規化。
需要確保資料表中的每一列資料都和主鍵直接相關,而不能間接相關。
(規範資料庫的設計)
參考部落格園連結:https://www.cnblogs.com/wsg25/p/9615100.html
上述部落格文章

4)規範性和效能的問題

阿里規定:關聯查詢的表不得超過三張表。

①考慮商業化的需求和目標(成本、使用者體驗),資料庫的效能更加重要。
②在考慮效能的問題的時候,需要適當的考慮一下規範性。
③故意給某些表增加一些冗餘的欄位(從多表查詢變為單表查詢)。
④故意增加一些計算列(從大資料量降低為小資料量的查詢:索引)。

相關文章