跳至內容

第四正規化

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

第四正規化(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

進一步閱讀

[編輯]