資料庫的三大正規化

2021-10-25 05:14:59 字數 1551 閱讀 3715

設計關聯式資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,這些不同的規範要求被稱為不同的正規化,各種正規化呈遞次規範,越高的正規化資料庫冗餘越小。

首先介紹一下什麼是正規化

正規化:符合某一種設計要求的總結。總的來說,資料庫的三大正規化就是,在設計資料庫的最為常見的三個主要規則。

這裡順便說一句,想要設計出乙個好的資料庫,和選秀節目一樣常常是需要打破常規在基礎之上建立獨有的特點才能夠出道的。所以說好的資料庫設計常常會符合這三大正規化,但不止於三大正規化。

第一正規化:要求資料庫表的每一列都是不可分割的原子資料項。

舉例說明:

在上面的表中,「家庭資訊」和「學校資訊」列均不滿足原子性的要求,故不滿足第一正規化,調整如下:

可見,調整後的每一列都是不可再分的,因此滿足第一正規化(1nf);

官方概念:資料表之中不存在非關鍵字段對任意一候選欄位的部分函式依賴

這個概念中最重要的是理解部分函式依賴。

第二正規化需要確保資料庫表中的每一列都和主鍵相關,而不能只與主鍵的某一部分相關(主要針對聯合主鍵而言)。

舉例說明:

在上圖所示的情況中,同乙個訂單中可能包含不同的產品,因此主鍵必須是「訂單號」和「產品號」聯合組成,

但可以發現,產品數量、產品折扣、產品**與「訂單號」和「產品號」都相關,但是訂單金額和訂單時間僅與「訂單號」相關,與「產品號」無關,

這樣就不滿足第二正規化的要求,調整如下,需分成兩個表:

官方概念:資料表之中不存在非關鍵字段對任意一候選關鍵字段的傳遞函式依賴。

重點在於:傳遞函式依賴。

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

舉例說明:

上表中,所有屬性都完全依賴於學號,所以滿足第二正規化,但是「班主任性別」和「班主任年齡」直接依賴的是「班主任姓名」,而不是主鍵「學號」,所以需做如下調整:

這樣就可以讓表中的任意一欄位完全依賴於主鍵。符合第三正規化。

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

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

資料庫三大正規化

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

資料庫三大正規化

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