資料庫三大正規化

2021-07-04 11:16:33 字數 1811 閱讀 9221

資料庫設計三大正規化

引言:

為了建立冗餘較少,

結構合理的資料庫

,設計資料庫時必須遵循一定的規則

.在關係型資料庫中這種規則被稱為正規化

.正規化是符合某一種設計要求的總結

.要想設計乙個結構合理的關係型資料庫

,必須滿足一定的正規化

.在實際開發中常見的設計正規化有三種:

1.第一種正規化(

確保每列保持原子性)

1.1內容

第一正規化是最基本的正規化.

如果資料庫中的所有的字段值都是不可分解的原子值

,就說明該資料庫表滿足了第一正規化.

1.2例子

第一正規化的合理遵循需要根據系統的實際需求來定.

比如某些資料庫系統中需要用到」位址」這個屬性,

本來直接將」位址」屬性設計成乙個資料庫表的字段就行.

但是如果系統經常會訪問」位址」屬性中的」城市部分,

那麼就非要將」位址」這個屬性重新拆分為省份,城市,

詳細位址等多個部分進行儲存

,這樣在對位址中某一部分操作的時候非常方便

.這樣設計才算滿足了資料庫的第一正規化.如圖

上圖所示的使用者資訊遵循了第一正規化的要求,

這樣在使用者使用城市進行分類的時候就非常方便

,也提高了資料庫的效能.

2,第二正規化

(確保表中的每列都和主鍵相關)

2.1內容

第二正規化在第一正規化的基礎上更進一層.

第二正規化需要確保資料庫表中的每一列都和主鍵相關

,而不能只與主鍵的某一部分相關

(主要針對聯合主鍵而言

).也就是說在乙個資料庫表中

,乙個表中只能儲存一種資料

,不可以把多種資料保持在同一張資料庫表中.

2.2.例子1

比如要設計乙個訂單資訊表,

因為訂單中可能會有多種商品

,所以要將訂單編號和商品編號作為資料庫表的聯合主鍵

,如圖所示:

訂單資訊表

這樣就產生乙個問題:

這個表中是以訂單編號和商品編號作為聯合主鍵

.這樣在該表中商品名稱,單位

,商品**等資訊不與該錶的主鍵相關

,而僅僅是與商品編號相關

.所以這裡違反了第二正規化的設計原則.

2.3例子2

而如果把這個訂單資訊表進行拆分,

把商品資訊分離到另乙個表中

,把訂單專案表也分離到另乙個表中

,就非常完美了

.如果所示:

這樣設計,

在很大程度上減小了資料的冗餘

.如果要獲取訂單的商品資訊

,使用商品編號到商品資訊表中查詢即可.

3.第三正規化(

確保每列都和主鍵列直接相關

,而不是間接相關)

第三正規化需要確保資料庫表中的每一列資料都和主鍵直接相關,

而不能間接相關.

比如在設計乙個訂單資料表的時候,

可以將客戶編號作為乙個外來鍵和訂單表建立相應的關係

.而不可以在訂單表中新增關於客戶其他資訊

(比如姓名

,所屬公司等

)的字段

.如圖所示:

這樣在查詢訂單資訊的時候,

就可以使用客戶編號來引用客戶資訊表中的記錄

,也不必在訂單資訊表中多次輸入客戶資訊的內容

,減小了資料冗餘.

!:第一正規化是不可拆分

第二是完全依賴

第三消除傳遞依賴

!第一正規化具有原子性

第二正規化主鍵與非主鍵列遵循完全函式依賴關係

第三正規化非主鍵之間沒有傳遞函式依賴關係

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

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

資料庫三大正規化

1 第一正規化 1nf 在任何乙個關聯式資料庫中,第一正規化 1nf 是對關係模式的基本要求,不滿足第一正規化 1nf 的資料庫就不是關聯式資料庫。所謂第一正規化 1nf 是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。如果出現...

資料庫三大正規化

第一正規化 確保每列的原子性.如果每列 或者每個屬性 都是不可再分的最小資料單元 也稱為最小的原子單元 則滿足第一正規化.例如 顧客表 姓名 編號 位址 其中 位址 列還可以細分為國家 省 市 區等。第二正規化 在第一正規化的基礎上更進一層,目標是確保表中的每列都和主鍵相關.如果乙個關係滿足第一正規...