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

2021-06-06 05:56:01 字數 1348 閱讀 2245

所謂正規化,就是關係型資料庫關係模式規範化的標準,從規範化的寬鬆到嚴格,分別為不同的正規化,通常使用的有第一正規化、第二正規化、第三正規化及bc正規化等。正規化是建立在函式依賴的基礎上的。那麼我們要了解三大正規化的話就先來看看函式依賴

定義:設有關係模式

r(u),x

和y是屬性集

u的子集,函式依賴是形為

x→y的乙個命題,對任意

r中兩個元組t和

s,都有

t[x]=s[x]

蘊涵t[y]=s[y]

,那麼fd x→y

在關係模式

r(u)

中成立。

x→y讀作

『x函式決定

y』,或

『y函式依賴於

x』。說的俗點就是:如果乙個表中某乙個字段

y的值是由另外乙個欄位或一組字段

x的值來確定的,就稱為

y函式依賴於

x。函式依賴應該是通過理解資料項和企業的規則來決定的,根據表的內容得出的函式依賴可能是不正確的。

定義:如果關係模式r的每個關係r的屬性都是不可分的資料項,那麼就稱r是第一正規化的模式。

第一正規化的目標是確保每列的原子性,每列都是不可再分的最小資料單元(也稱之為最小資料單元)

例如:

客人資訊表(姓名、年齡、客人編號.....)

定義:如果關係模式r是第一正規化,且每個非主屬性完全函式依賴於候選鍵,那麼就稱r是第二正規化。

簡單的說,第二正規化要滿足以下的條件:首先要滿足第一正規化,其次每個非主屬性要完全函式依賴與候選鍵,或者是主鍵。第二正規化其目標是確保表中的每列都和主鍵相關。

例如:

客房表(房間號、客房描述、床位數......)

客房狀態表(客房狀態、客房狀態名稱.....)

定義:如果關係模式r是2nf,且關係模式r(u,f)中的所有非屬性對任何候選關鍵字都不存在傳遞依賴,則稱關係r是屬於第三正規化了。

簡單的說,第三正規化要滿足以下的條件:首先要滿足第二正規化,其次非主屬性之間不存在函式依賴,也就是說要確保每列都和主鍵列直接相關。由於滿足了第二正規化,表示每個非主屬性的函式都依賴於主鍵,如果非主屬性之間存在了函式依賴,就會存在傳遞依賴,這樣就不滿足第三正規化了

舉個例子:

客人(客人姓名,身份證號,房間號,......)

客房(房間號,客房描述,客房型別編號....)

客房型別(客房型別編號,客房型別名稱,床位數,**...)

bc正規化(bcnf)bc正規化是第三正規化的增強版,不過也有人說是直接從第一正規化發展過來的,即每個屬性,包括主屬性或非主屬性,都完全依賴於候選鍵,並且不存在傳遞依賴情況

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

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

資料庫設計三大正規化應用例項剖析

引言 資料庫的設計正規化是資料庫設計所需要滿足的規範,滿足這些規範的資料庫是簡潔的 結構明晰的,同時,不會發生插入 insert 刪除 delete 和更新 update 操作異常。反之則是亂七八糟,不僅給資料庫的程式設計人員製造麻煩,而且面目可憎,可能儲存了大量不需要的冗餘資訊。設計正規化是不是很...

資料庫設計三大正規化應用例項剖析

引言 資料庫的設計正規化是資料庫設計所需要滿足的規範,滿足這些規範的資料庫是簡潔的 結構明晰的,同時,不會發生插入 insert 刪除 delete 和更新 update 操作異常。反之則是亂七八糟,不僅給資料庫的程式設計人員製造麻煩,而且面目可憎,可能儲存了大量不需要的冗餘資訊。設計正規化是不是很...