第四正規化
![本頁使用了標題或全文手工轉換](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
![]() | 此條目翻譯自英語維基百科,需要相關領域的編者協助校對翻譯。 |
第四正規化(4NF)是資料庫正規化中所使用的一種正規形式,是BC範式之後的另一層次的規範化。第二範式、第三範式、BC範式關注於屬性集合之間的函數依賴;而第四範式關注更一般形式稱作多值依賴。
Ronald Fagin於1977年提出。 數據庫的一個表遵從第四範式,當且僅當對於任意一個非平凡的多值依賴X Y, X是一個超鍵。[1]
多值依賴
關係數據庫的一個表中的列頭分為不相交的三組:X, Y, Z。在一行的特定上下文中,稱上述列組的數據值為x, y, z。多值依賴X Y,意味着如果選擇表中的任何值x(記作xc),從而確定該表中所有的xcyz列表,如果xc關聯着同一個y的值,不論z的任何取值。實質上,z的存在不提供任何信息能約束到y的可能值。也可以表述為,定義域的每一個值,都能確定值域中的一個值的集合。
平凡多值依賴 X Y是或者Y是X的子集,或者X與Y一起形成了該關係的整個屬性集合。
函數依賴是多值依賴的特例。函數依賴X → Y,那麼每個x確定了確切一個y值,而不能是多個。
例子
考慮下述例子:
Restaurant(餐廳) | Pizza Variety(披薩口味) | Delivery Area(配貨地區) |
---|---|---|
A1 Pizza | Thick Crust | Springfield |
A1 Pizza | Thick Crust | Shelbyville |
A1 Pizza | Thick Crust | Capital City |
A1 Pizza | Stuffed Crust | Springfield |
A1 Pizza | Stuffed Crust | Shelbyville |
A1 Pizza | Stuffed Crust | Capital City |
Elite Pizza | Thin Crust | Capital City |
Elite Pizza | Stuffed Crust | Capital City |
Vincenzo's Pizza | Thick Crust | Springfield |
Vincenzo's Pizza | Thick Crust | Shelbyville |
Vincenzo's Pizza | Thin Crust | Springfield |
Vincenzo's Pizza | Thin Crust | Shelbyville |
每一行指出一家飯店能提供一種披薩與一個配貨地區。
該表沒有非鍵屬性,因為它僅有的鍵是{Restaurant, Pizza Variety, Delivery Area}。因此,它滿足到BC範式為止的所有範式。如果假設,飯店提供的披薩種類與配貨地區無關。也即飯店為所有的供貨地區提供它能製作的所有披薩類型。那麼,這個表不滿足第四範式。因為這個表在{Restaurant}屬性(它不是超鍵)上提供了兩個非平凡的多值依賴:
- {Restaurant} {Pizza Variety}
- {Restaurant} {Delivery Area}
這些在一個非超鍵上的非平凡多值依賴說明了飯店提供的披薩的多樣性獨立於飯店的供貨地區。這導致了該表中的數據冗餘:例如,A1 Pizza供貨 Stuffed Crust就重複了3遍;如果A1 Pizza開始生產Cheese Crust pizzas那麼向表中增加多行,A1 Pizza的每個供貨地區都需要一行。這就可能在給A1 Pizza的每個供貨地區增加一行Cheese Crust披薩時,遺漏了一個供貨地區,從而導致不滿足於多值依賴{Restaurant} {Pizza Variety}。
為了避免上述的錯誤發生,需要把披薩的多樣性與供貨地區放置在不同的表中,產生了兩張滿足第四範式的表:
Restaurant | Pizza Variety |
---|---|
A1 Pizza | Thick Crust |
A1 Pizza | Stuffed Crust |
Elite Pizza | Thin Crust |
Elite Pizza | Stuffed Crust |
Vincenzo's Pizza | Thick Crust |
Vincenzo's Pizza | Thin Crust |
Restaurant | Delivery Area |
---|---|
A1 Pizza | Springfield |
A1 Pizza | Shelbyville |
A1 Pizza | Capital City |
Elite Pizza | Capital City |
Vincenzo's Pizza | Springfield |
Vincenzo's Pizza | Shelbyville |
如果披薩的種類隨着供貨地區不同而變化,那麼最初的三列的表就滿足第四範式。
Ronald Fagin證明總是能夠滿足第四範式。[2] Rissanen's theorem總是適用於多值依賴。
參見
參考文獻
- ^ "A relation schema R* is in fourth normal form (4NF) if, whenever a nontrivial multivalued dependency X Y holds for R*, then so does the functional dependency X → A for every column name A of R*. Intuitively all dependencies are the result of keys." Fagin, Ronald. Multivalued Dependencies and a New Normal Form for Relational Databases (PDF). ACM Transactions on Database Systems. September 1977, 2 (1): 267. doi:10.1145/320557.320571. (原始內容 (PDF)存檔於2007-11-29).
- ^ Fagin, p. 268
進一步閱讀
- Date, C. J. (1999), An Introduction to Database Systems (8th ed.). Addison-Wesley Longman. ISBN 0-321-19784-4.
- Kent, W. (1983) A Simple Guide to Five Normal Forms in Relational Database Theory (頁面存檔備份,存於網際網路檔案館), Communications of the ACM, vol. 26, pp. 120–125