數據庫設計

數據庫設計

關係型數據庫建議在E-R模型的基礎上,咱們須要根據產品經理的設計策劃,抽取出來模型與關係,制定出表結構,這是項目開始的第一步。數據庫設計

在開發中有不少設計數據庫的軟件,經常使用的如power designer,db designer等,這些軟件能夠直觀的看到實體及實體間的關係。性能

設計數據庫,多是由專門的數據庫設計人員完成,也多是由開發組成員完成,通常是項目經理領組員完成。設計

三範式

通過研究和對使用中問題的總結,對於設計數據庫提出了一些規範,這些規範被稱爲範式(Normal Form)orm

目前有跡可循的共有8種範式,通常須要遵循3範式便可:對象

第一範式(1NF):

第一範式是最基本的範式,強調的是列的原子性,即列不能再分紅其餘幾列blog


上圖不符合第一範式,買家地址能夠拆分ip

這樣修改就遵循了第一範式。修改後的訂單表 在用戶使用城市進行分類的時候會很是方便,提升了數據庫性能開發

第二範式(2NF):

首先是基於第一範式,另外包含兩部份內容,一是表必須有一個主鍵;二是沒有包含在主鍵中的列必須徹底依賴於主鍵,而不能只依賴主鍵的一部分。也就是說在一個數據表中,只能保存一種數據,不能把多種數據保存在同一張表中。產品

上面的訂單表能夠繼續拆分

第三範式(3NF):

首先是基於第二範式,另外非主鍵列必須直接依賴於主鍵,不能存在傳遞依賴。 確保數據表中每一列數據都和主鍵直接相關,而不能間接相關。要求一個關係中不包含在其餘關係已包含的非主鍵字段信息。

上圖看出,雖然單價和商品直接相關,但單價不與訂單直接相關,不符合第三範式,還能夠繼續拆分。

E-R模型

  • E表示Entity,實體,設計實體就像定義一個類同樣,指定從哪些方面描述對象一個實體轉換爲數據庫中的一個表
  • R表示relationship,關係,關係描述兩個實體之間的對應規則,關係的類型包括一對1、一對多、多對多
  • 關係也是一種數據,須要經過一個字段存儲在表中
  • 實體A對實體B爲1對1,則在表A或表B中建立一個字段,存儲另外一個表的主鍵值
  • 實體A對實體B爲1對多:在表中建立一個字段,存儲表A的主鍵值
  • 實體A對實體B爲多對多:新建一張表C,這個表只有兩個字段,一個用於存儲A的主鍵值,一個用於存儲B的主鍵值
相關文章
相關標籤/搜索