第二正規化
第三正規化
目的:減少資料冗餘
在設計和資料庫有關的系統時,資料庫表的設計至關重要,這些設計關係整個系統的架構,需要精心的仔細考慮。列不可分資料庫表中的所有字段值都是不可分解的原子值,確保每列保持原子性。資料庫的設計主要包含了設計表結構和表之間的聯絡,在設計的過程中,有一些規則應該遵守。
在任何乙個關聯式資料庫中,第一正規化(1nf)是對關係模式的基本要求,不滿足第一正規化(1nf)的資料庫就不是關聯式資料庫。所謂第一正規化(1nf)是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,address:湖南省株洲市天元區泰山88號即實體中的某個屬性不能有多個值或者不能有重複的屬性。如果出現重複的屬性,就可能需要定義乙個新的實體。
新的實體由重複的屬性構成,新實體與原實體之間為一對多關係。在第一正規化(1nf)中表的每一行只包含乙個例項的資訊。
某些資料庫系統中需要用到「位址」這個屬性,本來直接將「位址」屬性設計成乙個資料庫表的字段就行。乙個表中只能儲存一種實體,不能部分依賴乙個表中只能儲存一種實體,不可以把多種資料儲存在同一張資料庫表中。但是如果系統經常會訪問「位址」屬性中的「城市」部分,那麼就非要將「位址」這個屬性重新拆分為省份、城市、詳細位址等多個部分進行儲存,
這樣在對使用者使用城市進行分類的時候就非常方便,也提高了資料庫的效能。這樣設計才算滿足了資料庫的第一正規化。
第二正規化(2nf)是在第一正規化(1nf)的基礎上建立起來的,即滿足第二正規化(2nf)必須先滿足第一正規化(1nf)。這張表有兩個實體第二正規化(2nf)要求資料庫表中的每個例項必須可以被惟一的區分。為實現區分通常需要為表加上乙個列,以儲存各個例項的惟一標識。
要求實體的屬性完全依賴於主關鍵字。不能部分依賴。
即:一張表存在組合主鍵時,其他非主鍵字段不能部分依賴。
存在多對多關係時只有乙個字段作為主鍵是不夠的。分解如下:這張表中的主鍵是學號和教師編號的組合
部分依賴,會產生冗餘資料,需要分解表
學生
老師
聯合主鍵
表裡面的列不能出現其它表的非主鍵字段,不傳遞依賴
員工資訊表中列出部門編號後就不能再將部門名稱、部門簡介等其他非主鍵字段
滿足第三正規化(3nf)必須先滿足第二正規化(2nf)。班級名稱和班級資訊這一組值沒有必要的重複出現在第二正規化的基礎上,資料表中如果不存在非關鍵字段對關鍵字段的傳遞函式依賴則符合第三正規化。
不能存在傳遞依賴。即:除主鍵外,其他字段必須依賴主鍵
例如,存在乙個部門資訊表,其中每個部門有部門編號(dept_id)、部門名稱、部門簡介等資訊。
那麼員工資訊表中列出部門編號後就不能再將部門名稱、部門簡介等與部門有關的資訊再加入員工資訊表中。
如果不存在部門資訊表,則根據第三正規化(3nf)也應該構建它,否則就會有大量的資料冗餘。
班級資訊並不直接依賴於學號(主鍵),而是依賴於班級號,也就是時說表**現了傳遞依賴解決這個問題的辦法是把這些和學號(主鍵)沒有直接聯絡的資訊記錄的新的表裡面。
資料庫設計三大正規化資料庫設計三大正規化
為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化...
資料庫設計三大正規化
為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化...
資料庫設計三大正規化
為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化...