Fjärde normalformen

Fjärde normalformen ( 4NF ) är en normalform som används vid databasnormalisering . 4NF introducerades av Ronald Fagin 1977 och är nästa nivå av normalisering efter Boyce-Codd normalform ( BCNF). Medan de andra , tredje och Boyce-Codd normalformerna handlar om funktionella beroenden , handlar 4NF om en mer allmän typ av beroende känd som ett multivärdigt beroende . En tabell är i 4NF om och endast om , för vart och ett av dess icke-triviala flervärdiga beroenden X Y , X är en supernyckel — det vill säga X är antingen en kandidatnyckel eller en superset därav.

Flervärdiga beroenden

Om kolumnrubrikerna i en relationsdatabastabell är uppdelade i tre osammanhängande grupperingar X , Y , och Z , då, i sammanhanget för en viss rad, kan vi referera till data under varje grupp av rubriker som x , y och z respektive. Ett flervärdigt beroende X Y betyder att om vi väljer något x som faktiskt förekommer i tabellen (kalla detta val x c ), och kompilerar en lista över alla x c yz -kombinationer som förekommer i tabellen, vi kommer att upptäcka att x c är associerad med samma y- poster oavsett z . Så i huvudsak ger närvaron av z ingen användbar information för att begränsa de möjliga värdena för y .

Ett trivialt flervärdigt beroende X Y är ett där antingen Y är en delmängd av X , eller X och Y tillsammans bildar hela uppsättningen av attribut för relationen.

Ett funktionellt beroende är ett specialfall av flervärdigt beroende. I ett funktionellt beroende X Y bestämmer varje x exakt ett y , aldrig mer än ett.

Exempel

Tänk på följande exempel:

Pizzaleveranspermutationer
Restaurang Pizza variation Leveransområde
A1 Pizza Tjock botten Springfield
A1 Pizza Tjock botten Shelbyville
A1 Pizza Tjock botten Huvudstad
A1 Pizza Fylld skorpa Springfield
A1 Pizza Fylld skorpa Shelbyville
A1 Pizza Fylld skorpa Huvudstad
Elitpizza Tunn skorpa Huvudstad
Elitpizza Fylld skorpa Huvudstad
Vincenzos pizza Tjock botten Springfield
Vincenzos pizza Tjock botten Shelbyville
Vincenzos pizza Tunn skorpa Springfield
Vincenzos pizza Tunn skorpa Shelbyville

Varje rad indikerar att en given restaurang kan leverera en given sorts pizza till ett givet område.

Tabellen har inga icke-nyckelattribut eftersom dess enda kandidatnyckel är {Restaurant, Pizza Variety, Delivery Area}. Därför möter den alla normala former upp till BCNF. Om vi ​​däremot antar att pizzasorter som erbjuds av en restaurang inte påverkas av leveransområdet (dvs. en restaurang erbjuder alla pizzasorter den tillverkar till alla områden som den levererar), så uppfyller den inte 4NF. Problemet är att tabellen har två icke-triviala flervärdiga beroenden av attributet {Restaurant} (som inte är en supernyckel). Beroendena är:

  • {Restaurang} {Pizzavariant}
  • {Restaurang} {Leveransområde}

Dessa icke-triviala mångfaldiga beroenden av en icke-supernyckel återspeglar det faktum att de sorters pizza som en restaurang erbjuder är oberoende av de områden som restaurangen levererar till. Detta tillstånd leder till överflöd i tabellen: till exempel får vi veta tre gånger att A1 Pizza erbjuder fyllda skorpa, och om A1 Pizza börjar producera Cheese Crust-pizzor måste vi lägga till flera rader, en för var och en av A1 Pizzas leveransområden. Det finns dessutom inget som hindrar oss från att göra detta felaktigt: vi kan lägga till Cheese Crust-rader för alla utom ett av A1 Pizzas leveransområden, och därigenom misslyckas med att respektera det flervärdiga beroendet {Restaurang} ↠ {\displaystyle \twoheadrightarrow Pizzavariant }.

För att eliminera möjligheten till dessa anomalier måste vi placera fakta om sorter som erbjuds i en annan tabell än fakta om leveransområden, vilket ger två tabeller som båda finns i 4NF:

Sorter efter restaurang
Restaurang Pizza variation
A1 Pizza Tjock botten
A1 Pizza Fylld skorpa
Elitpizza Tunn skorpa
Elitpizza Fylld skorpa
Vincenzos pizza Tjock botten
Vincenzos pizza Tunn skorpa
Leveransområden efter restaurang
Restaurang Leveransområde
A1 Pizza Springfield
A1 Pizza Shelbyville
A1 Pizza Huvudstad
Elitpizza Huvudstad
Vincenzos pizza Springfield
Vincenzos pizza Shelbyville

Däremot, om pizzasorterna som erbjuds av en restaurang ibland legitimt varierade från ett leveransområde till ett annat, skulle den ursprungliga tabellen med tre kolumner tillfredsställa 4NF.

Ronald Fagin visade att det alltid är möjligt att uppnå 4NF. Rissanens sats är också tillämplig på flervärdiga beroenden .

4NF i praktiken

En artikel från 1992 av Margaret S. Wu noterar att undervisningen i databasnormalisering vanligtvis stannar vid 4NF, kanske på grund av en övertygelse om att tabeller som bryter mot 4NF (men uppfyller alla lägre normala former) sällan påträffas i affärsapplikationer. Denna övertygelse kanske inte är korrekt, dock. Wu rapporterar att i en studie av fyrtio organisatoriska databaser innehöll över 20 % en eller flera tabeller som bröt mot 4NF samtidigt som de uppfyllde alla lägre normala former.

Normalisering bortom 4NF

Endast i sällsynta situationer överensstämmer inte en 4NF-tabell med den högre normala formen 5NF . Dessa är situationer där en komplex verklig begränsning som styr de giltiga kombinationerna av attributvärden i 4NF-tabellen inte är implicit i strukturen för den tabellen.

Se även


Vidare läsning