第四正規化

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

第四正規化(4NF)是資料庫正規化中所使用的一種正規形式,是BC正規化之後的另一層次的正規化。第二正規化、第三正規化、BC正規化關注於屬性集合之間的函數相依;而第四正規化關注更一般形式稱作多值相依

Ronald Fagin英語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是或者YX的子集,或者XY一起形成了該關係的整個屬性集合。

函數相依是多值相依的特例。函數相依XY,那麼每個x確定了確切一個y值,而不能是多個。

例子[編輯]

考慮下述例子:

Pizza Delivery Permutations(披薩配貨組合)
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}。

為了避免上述的錯誤發生,需要把披薩的多樣性與供貨地區放置在不同的表中,產生了兩張滿足第四正規化的表:

Varieties By Restaurant
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
Delivery Areas By Restaurant
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英語Rissanen's theorem總是適用於多值相依

參見[編輯]

參考文獻[編輯]

  1. ^ "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). 
  2. ^ Fagin, p. 268

進一步閱讀[編輯]