資料庫三大正規化學習筆記

2021-10-05 08:46:46 字數 1249 閱讀 7887

在設計與操作維護資料庫時,最關鍵的問題就是要確保資料能夠正確地分布到資料庫的表中。使用正確的資料結構,不僅有助於對資料庫進行相應的訪問操作,還可以極大地簡化應用程式中的其他內容(查詢、窗體、報表、**等),按照「資料庫規範化」對錶進行設計,其目的就是減少資料庫中的資料冗餘,以增加資料的一致性

在實際的資料庫表結構設計中,滿足三正規化就足夠了。其中,三種正規化是條件遞增的聯絡(即後乙個正規化是在前乙個條件滿足的情況下引入新的條件)。

滿足條件:

1. 原子性,即資料庫表裡的字段都是不可分割的。

第一正規化的模式要求屬性值不可再**成更小部分,即屬性項不能是屬性組合或是由一組屬性構成。

例如,由「職工號」「姓名」「**號碼」組成的表(乙個人可能有一部辦公**和一部移動**),這時將其規範化為1nf可以將**號碼分為「辦公**」和「移動**」兩個屬性,即職工(職工號,姓名,辦公**,移動**)。

滿足條件:

1. 原子性,即資料庫表裡的字段都是不可分割的;

2. 表中必須有主鍵

3. 其他非主屬性必須完全依賴主鍵(不能依賴主鍵一部分,這是針對聯合主鍵說的)。

例如,在選課關係表(學號,課程號,成績,學分),關鍵字為組合關鍵字(學號,課程號),但由於非主屬性學分僅依賴於課程號,對關鍵字(學號,課程號)只是部分依賴,而不是完全依賴,因此此種方式會導致資料冗餘以及更新異常等問題,解決辦法是將其分為兩個關係模式:學生表(學號,課程號,分數)和課程表(課程號,學分),新關係通過學生表中的外關鍵字課程號聯絡,在需要時進行連線。

滿足條件:

1. 原子性,即資料庫表裡的字段都是不可分割的;

2. 表中必須有主鍵;

3. 其他非主屬性必須完全依賴主鍵(不能依賴主鍵一部分,這是針對聯合主鍵說的);

4. 非表中主鍵字段完全直接依賴主鍵,不能是傳遞依賴。

以學生表(學號,姓名,課程號,成績)為例,其中學生姓名無重名,所以該錶有兩個候選碼(學號,課程號)和(姓名,課程號),故存在函式依賴:學號—>姓名,(學號,課程號)—>成績,唯一的非主屬性成績對碼不存在部分依賴,也不存在傳遞依賴,所以屬性屬於第三正規化。

三大正規化只是一般設計資料庫的基本理念,可以建立冗餘較小、結構合理的資料庫。如果有特殊情況,當然要特殊對待,資料庫設計最重要的是看需求跟效能,需求》效能》表結構,所以不能一味的去追求正規化建立資料庫。

相關可學習部落格:

1.2.

3.

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

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

資料庫設計的三大正規化 學習筆記

概念 設計資料庫時,需要遵循的一些規範。要遵循後邊的正規化要求,必須先遵循前邊的所有正規化要求 設計關聯式資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,這些不同的規範要求被稱為不同的正規化,各種正規化呈遞次規範,越高的正規化資料庫冗餘越小。目前關聯式資料庫有六種正規化 第一正規化 1nf ...

資料庫三大正規化

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