前言
在一個不規範化的關係模式中可能會出現數據冗餘、插入異常、更新異常和刪除異常,如果要解決這些問題就要用到規範化理論
規範化
規範化可以直觀地描述將具有不合適性質的關係轉換爲更合適的形式。一個低一級範式的關係模式通過模式分解可以轉換爲若干個高一級範式的關係模式的集合,這種過程就叫規範化
函數依賴
設R(U)是屬性集U上的關係模式,X, Y是U的子集。若對於R(U)的任意一個可能的關係r,r中不可能存在兩個元組在X上的屬性值相等,而在Y上的屬性值不等,則稱X函數確定Y或Y函數依賴於X,記作X->Y
函數依賴和別的數據依賴一樣是語義範疇的概念,只能根據語義來確定一個函數依賴
- 非平凡函數依賴 ,X->Y,但Y⊈X,則稱X->Y是非平凡的函數依賴
- 平凡函數依賴,X->Y,但Y⊆X,則稱X->Y是平凡的函數依賴
- 完全函數依賴,X->Y,並且對於X的任何一個真子集X’,都有X’-/->Y,則稱Y對X完全函數依賴
- 部分函數依賴,X->Y,但Y不完全函數依賴於X,則稱Y對X部分函數依賴
- 傳遞函數依賴,X->Y,Y-/->X,Y->Z,Z⊈Y則稱Z對X傳遞函數依賴
碼
詳細在數據庫原理(五)- 關係數據結構及形式化定義中可知
範式
關係數據庫中的關係是要滿足一定要求的,滿足不同程度要求的爲不同範式,規範化共有1NF、2NF、3NF、BCNF、4NF、5NF五個等級,對於各種範式之間的關係可以描述爲:
5NF ⊂ 4NF ⊂ BCNF ⊂ 3NF⊂ 2NF ⊂ 1NF
1NF
1NF需要滿足每個分量必須是不可分的數據項
student(Sno,Sname,Ssex)
2NF
若R∈1NF,且每一個非主屬性完全函數依賴於任何一個候選碼,則R∈2NF
R(Sno,Con,Ggrade) F{(Sno,Cno)->Ggrade} //如學號+課程號纔可以知道這門課程的成績,
又假如使用學號就可以知道這門課程的成績,這個關係模式中具有部分函數依賴
3NF
若R∈2NF,且每一個非主屬性不傳遞函數依賴於碼
錯誤示例
R(Sno,Sdept,Sloc) F{Sno->Sdept,Sdept->Sloc}
//通過學號可以知道所在系,通過所在系可以知道宿舍樓所在地,以此可知通過學號可以知道你的宿舍樓所在地 ,
R關係模式中包括傳遞函數依賴
我們可以通過模式分解來消除R關係中的傳遞依賴,達到3NF
R1(Sno,Sdept) R2(Sdept,Sloc)
BCNF
- 所有非主屬性對每一個候選鍵都是完全函數依賴;
- 所有的主屬性對每一個不包含它的候選鍵,也是完全函數依賴;
- 沒有任何屬性完全函數依賴於非候選鍵的任何一組屬性
多值依賴
設R(U)是一個屬性集合U上的一個關係模式,X, Y, 和Z是U的子集,並且Z=U-X-Y,多值依賴X->->Y成立當且僅當對R的任一個關係r,r在(X,Z)上的每個值對應一組Y的值,這組值僅僅決定於X值而與Z值無關。
若X->->Y,而Z=空集,則稱X->->Y爲平凡的多值依賴;否則,稱X->->Y爲非平凡的多值依賴.
4NF
如果它是BC範式,並且沒有多值依賴關係,那麼關係將是4NF
5NF
如果它在4NF 中並且不包含任何連接依賴關係並且連接應該是無損的,則關係在5NF 中,當所有表都被分成儘可能多的表以便避免冗餘時,滿足5NF
數據依賴的公理系統
數據依賴的公理系統是模式分解的理論基礎,下面首先討論函數依賴的一個有效而完備的公理系統 —— Armstrong公理系統
Armstrong公理系統設爲U爲屬性集總體,F是U上的一組函數依賴,於是有關係模式R<U,F>來說有以下推理規則:
- 自反律(Reflexivity):若Y Í X Í U,則X →Y爲F所蘊含(平凡函數依賴)
- 增廣律(Augmentation):若X→Y爲F所蘊含,且Z Í U,則XZ→YZ爲F所蘊含
- 傳遞律(Transitivity):若X→Y及Y→Z爲F所蘊含,則X→Z爲F所蘊含(傳遞函數依賴)
根據前面三條推理規則可以得到下面三條很有用的推理規則
- 合併規則:由X→Y,X→Z,有X→YZ (2,3)
- 僞傳遞規則:由X→Y,WY→Z,有XW→Z (2,3)
- 分解規則:由X→Y及 ZÍY,有X→Z (1,3)
模式的分解
對於一個模式的分解時多種多樣的,但是分解後產生的模式應與原模式等價
人們從不同的角度去觀察問題,對”等價“的概念形成了三種不同的定義:
- 分解具有無損連接性
- 分解具有保持函數依賴
- 分解既要保持函數依賴,又要具有無損連接性
這三個定義是實行分解的三條不同的準則。按照不同的分解準則,模式所能達到的分離程度各不相同,各種範式就是對分離程度的測度