詳細解說資料庫正規化

2022-08-21 08:24:12 字數 2478 閱讀 1815

目錄

1.2  認識資料庫正規化

1.2.1  什麼是資料庫正規化

1.2.2 第一正規化1nf

1.2.3  第二正規化2nf

1.2.4  第三正規化3nf

作為一名oracle從業人員,經常需要面對設計資料庫的任務,比如作為一名dba,喲偶可能需要為企業的資料庫應用程式設計高效和優雅的資料庫,避免資料庫的冗餘難以維護,要設計精良的資料庫,必須遵循一定的規則,而理解資料庫方式是進行高效資料庫設計的基礎。

為了規範化關係型資料庫模型,要求資料庫系統在設計時必須遵循一定的規則,這種規則就稱為關係型資料庫系統正規化。使用正規化的主要目的是為了減低資料的冗餘,設計結構合理的資料庫。目前關係型資料庫中公有6個正規化,一般來說資料庫只需要滿足前面3個正規化即可,這3中正規化如下所示。

■ 第一正規化(1nf):字段必須具有單一屬性特性,不可再拆分,比如員工名稱字段,必須具有單一的屬性,不可以在乙個欄位中包含員工中文名或英文名,必須考慮拆分為兩個字段。

■ 第二正規化(2nf):表要具有唯一性的主鍵列。也就是說表中的每一行喲啊具有乙個唯一性的標識列,比如通常使用guid或自動增長的數字編碼來唯一地標識一行,或者是使用身份證號碼來唯一地標識員工表中的員工。

■ 第三正規化(3nf):表中的字段不能包含在其他表中已出現的非住建欄位,比如員工表中已經包含了部門的名稱,而部門表中部門編號為主鍵,部門名稱為非主鍵,那麼這就不符合第三正規化,通過將員工表中的部門名稱更改為部門編號,則可以符合第三正規化。

正規化是乙個逐步公升級的過程,也就是說只有在滿足了第一正規化的情況下,第二正規化才能繼續進行,正規化的實現過程如圖1.8所示。

■ 使資料變得更有組織。

■ 將資料的修改量變得更少,比如當乙個表的具體字段記錄更新時,其他醫用到該表中字段的表會自動得到更新。

■ 需要儲存資料的物理空間變得更少。

下面的幾個小姐將分別對每乙個正規化的具體實現過程進行示例介紹。

第一正規化是設計關係型資料庫時應該滿足的乙個基本正規化,可以說如果乙個資料庫不滿足第一正規化,將就不是乙個關係型資料庫。

第一正規化要求表中每乙個欄位都具有唯一的屬性,不可以再繼續被拆分,舉個例子,在設計認人事資料資料庫事,其基本結構如表1.1所示。

表1.1 人事資訊表

工號 姓名 位址 ** b0001 張子木 廣東省深圳市紅岭東路121號 13899168 b0002 李子木 廣東省廣州市人民西路20號 13799168

這個表中的每乙個欄位都是具有唯一的屬性,可以滿足人事資訊管理的基本需求,因此如果人事資訊管理相對簡單,也可以說這個表是符合1nf正規化的。

如果人事資訊的**號碼出現了兩個,或者乙個人具有乙個公司位址和家庭位址,那麼這個設計就不再符合第一正規化了,。在比如如果位址欄位要拆分為按省、城市和街道位址來進行細分,那麼位址就不在唯一屬性,需要繼續進行拆分,因此也不符合第一正規化。

對於重複的字段,可以建立單獨的實體來解決,比如重複的**和位址,可以分別建立乙個**實體和乙個笛之愛實體來解決。對於可再拆分的字段,可以通過多個欄位來進行表示,例如如果要對位址進行再拆分,結果就可以變成如表1.2所示的人事資訊表。

1.2 對位址進行再拆分後的人事資訊表

工號姓名

省份城市

街道**

b0001

張子木廣東省

深圳市紅岭東路121號

13899168

b0002

李子木廣東省

廣州市人民西路20號

13799168

經過拆分後,現在可以說人事資訊表基本符合資料庫的第一正規化,由於正規化是乙個公升級的過程,而第一正規化又是乙個基本的條件,因此接下來就可以繼續進行設計,以便滿足第二正規化。

第二正規化是在第一正規化的基礎之前簡歷起來的,也就是說,必須首先滿足第一正規化,才能滿足第二正規化。第二正規化要求每乙個資料實體或資料行必須具有乙個唯一的識別符,以便可以被唯一地區分。

第二正規化要求在行中必須要儲存乙個用來唯一地標識一行的列,在人事資訊表中,使用工號作為唯一性的列。由於工號具有唯一性,可以用來唯一地區分一行,因此通常將工號作為整個表的主鍵或主碼。當確定了主鍵後,所有其他的字段將完全依賴於主鍵存在。

主鍵通常使用pk(primary key)進行表示,例如圖1.9演示了為員工表和部門表兩個實體分別使用工號和部門編號來唯一地區分某行。(由於我這裡沒有er畫圖工具,就用excel列出來)

在將工號和部門編號作為主鍵後,表中的其他字段必須具有對主鍵的依賴關係,如果不是直接依賴,必須考慮另外建立乙個新的實體,使其符合第二正規化。

第三正規化是在第二正規化的基礎上的公升級,也就是說為了滿足第三正規化,必須先滿足第二正規化。第三正規化要求在表中不能包含已經在其他表彙總包含的主鍵字段資訊。

下面是員工表和部門表兩個表,其中員工表中包含了在部門表中已經包含的非主鍵字段資訊,如圖1.10所示。

第三正規化用來消除冗餘的資料,可以避免很多資料操作的儲存異常,因此在圖中,部門名稱和部門經理是已經在部門表1中存在的非主鍵字段,如果在員工表1中在此包含這兩個字段,就導致了資料的冗餘,並且會導致儲存的異常。當使用者對部門表彙總的部門名稱和部門經理進行了修改之後,如果不對運功表中相關的字段進行修改,則會導致資料的不一致的出現。

MySql資料庫三大正規化與反正規化詳細解說

三大正規化是為了在設計中更好的解決資料冗餘,資料有效性檢查,提高儲存效率考慮。提出的三大正規化。但其實在工程專案中,有時候為了效率考慮,很多時候並不會按照三大正規化來設計資料庫。下面我們來了解一下資料庫的三大正規化與反正規化。第一正規化 1nf 每個表的每一列都要保持它的原子性也就是表的每一列都是不...

與SQL Server資料庫的比較 詳細解說

很多oracle從業人員都具有sql server的基礎,如果讀者剛剛有sql server轉到oracle資料庫平台,那麼有必要了解一下sql server和oracle之間的差異。最明顯的區別是oracle是跨平台的資料庫系統,它可以執行在windows linux unix等何種資料平台上,這...

資料庫的三正規化詳細解釋

三正規化是資料庫的規範化的內容,所謂的資料庫三正規化通俗的講就是設計資料庫表所應該遵守的一套規範,如果不遵守就會造成設計的資料庫不規範,出現資料庫字段冗餘,資料的查詢,插入等操作等問題。注意 資料庫不僅僅只有三正規化 1nf 2nf 3nf 還有bcnf 4nf 5nf 不過在實際的資料庫設計時,遵...