資料庫設計三大正規化

2021-10-11 09:19:16 字數 1644 閱讀 8177

所謂的正規化其實就是規則,要設計好乙個結構合理的關係型資料庫,必須滿足一定的規則。

在實際開發中,最常見的設計正規化有三個:

這是最基本的正規化,要求表中的所有字段值都是不可分解的原子值。舉個例子,某些資料庫系統要用到「位址」這個屬性,本來直接將這個「位址」屬性儲存到乙個欄位裡就可以了。但是如果系統會經常訪問「位址」屬性中的城市部分,那麼就得將「位址」這個屬性重新拆分成國別、省份、城市、縣、鄉等詳細的各個部分進行儲存,這樣對位址中某一部分操作的時候會特別方便,如下表所示:

id姓名

省份城市

詳細位址1老王

江蘇南京

***2

老李浙江

杭州***

上邊的**就遵循了第一正規化的要求,這樣對使用者按照城市進行分類的話就非常方便了。

第二正規化在第一正規化的基礎之上,第二正規化要求資料庫表中的每列必須和主鍵相關,而不是跟主鍵中的某一部分相關。即,在同一張表裡只能儲存一種型別的資料,不能毫不相關的資料都扔到一張表裡。如下表所示:

訂單編號

商品編號

商品名稱

客戶所屬單位

****

0011

挖掘機老王

南京皮革產

010-1234567

0022

叉車老李

阿里巴巴

010-1234567

這樣設計**的話,商品名稱實際上不與主鍵訂單編號相關,不滿足第二正規化。我們將其拆分成如下的**:

--------------------------訂單資訊表--------------------------

訂單編號

商品編號

0011

0022

--------------------------訂單專案表--------------------------

訂單編號

客戶所屬單位

****

001老王

南京皮革產

010-1234567

002老李

阿里巴巴

010-1234567

--------------------------商品資訊表--------------------------

商品編號

商品名稱

1挖掘機2叉車

這樣設計就可以了

第三正規化需要確保每列都和主鍵列直接相關而不是間接相關。比如在設計訂單資料表的時候,可以把客戶編號作為乙個外來鍵與訂單表簡歷相應的聯絡。如下兩張表就滿足第三正規化:

--------------------------訂單資訊表--------------------------

訂單編號

訂單專案

業務員訂單數量

客戶編號

001挖掘機李靜3

1002

叉車劉天42

--------------------------客戶資訊表--------------------------

客戶編號

客戶名稱

所屬公司

****1李白

中國銀行

121232141262杜甫

建設銀行

13124354363

這樣在查詢訂單資訊的時候,就可以使用客戶編號來引用客戶資訊表中的記錄,也不必在訂單資訊多次輸入客戶資訊減少了資料的冗餘。

資料庫設計三大正規化資料庫設計三大正規化

為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化...

資料庫設計三大正規化

為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化...

資料庫設計三大正規化

為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化...