為了建立冗余較小,結構合理的數據庫,設計數據庫時必須遵循一定的規則,在關系型數據庫中,這種規則就叫做范式。
范式就是符合某一種設計要求的總結,要想設計一個結構合理的關系型數據庫,必須滿足一定的范式。
在實際開發中最常見的設計范式有三種:
第一范式 : 每一列屬性都是不可再分的屬性值,確保每列保持原子性。
第一范式的合理遵循需要根據系統給的實際需求來確定,比如設計用戶表的時候,地址這個屬性,可以把地址設計成一個字段即可,但是如果系統經常訪問地址的城市部分,那么一定要將地址這個屬性重新拆分成省份、城市、詳細地址多個部分存儲。這樣對用戶信息操作的時候會非常方便,也提高了數據庫的性能。
例子1-1
第二范式:確保表中的每列都和主鍵相關
? ? 第二范式比第一范式的基礎上更進一層,第二范式需要確保數據庫表中每一列都和主鍵相關,即一行數據只做一件事,而不能只和主鍵的某一部分相關(主要針對聯合主鍵而言)。
不規范例子
這個表是以訂單編號和商品編號為聯合主鍵,但是商品名稱和單位等字段僅僅和商品主鍵相關,在這里違反了第二范式。
第三范式:確保每列都和主鍵列直接相關,而不是間接相關
? ? 第三范式需要確保數據表中的每一列數據都和主鍵直接相關,而不能間接相關
? ? 比如在設計一個訂單數據表的時候,可以將客戶編號作為一個外鍵和訂單表建立相關的關系,而不可以再訂單表中添加關于客戶的其他信息的字段。
正確例子