閱讀450 返回首頁    go 阿裏雲 go 技術社區[雲棲]


數據庫設計三大範式

沒有規矩不成方圓,設計數據庫時也必須遵循一定的規矩,在現在最流行的關係型數據庫中,這種規矩就叫範式。想要設計某一種結構的關係型數據庫,就必須遵守某一種範式。

 

第一範式:列不可再分


在個人信息表中經常有地址這一列,想一想,地址這一列能不能再分呢?答案是可以的。地址列可以分為省份,城市,街道。同樣還有其他的列可以分得更細。
當該表中每一列都不可再分的時候,該表就滿足第一範式了。

 


 

第二範式:每列都和主鍵相關

 

一個數據庫表中,一個表中隻能保存一種數據,不可以把多種數據保存在同一張數據庫表中。比如一個訂單表,訂單編號和商品編號作為聯合主鍵,但這樣在該表中商品名稱、商品價格等信息不與該表的主鍵之一訂單編號相關,而僅僅是與商品編號相關。所以這裏違反了第二範式的設計原則。

如果把這個訂單信息表進行拆分,把商品信息分離到另一個表中,把訂單項目表也分離到另一個表中,就滿足第二範式了。

 

原表

 

滿足第二範式

 

 

 

第三範式:每列都和主鍵列直接相關

 

第三範式需要確保數據表中的每一列數據都和主鍵直接相關,而不能間接相關。

比如在設計一個訂單數據表的時候,可以將客戶編號作為一個外鍵和訂單表建立相應的關係。而不可以在訂單表中添加關於客戶其它信息(比如姓名、所屬公司等)的字段。如下麵這兩個表所示的設計就是一個滿足第三範式的數據庫表。

 

 

原帖地址:https://www.cnblogs.com/linjiqin/archive/2012/04/01/2428695.html

 

 

最後更新:2017-04-02 15:15:17

  上一篇:go 阻礙Windows 8快速部署的十大障礙
  下一篇:go Win8觸控時代來了,該跟Windows XP說再見了