V relačnej databáze vzniká závislosť, keď informácie uložené v rovnakej databázovej tabuľke jednoznačne určujú iné informácie uložené v tej istej tabuľke. Viachodnotová závislosť nastane, keď prítomnosť jedného alebo viacerých riadkov v tabuľke znamená prítomnosť jedného alebo viacerých ďalších riadkov v tej istej tabuľke. Inými slovami, dva atribúty (alebo stĺpce) v tabuľke sú od seba nezávislé, ale oba závisia od tretieho atribútu.
Viachodnotová závislosť zabraňuje štandardnej štvrtej normálnej forme normalizácie. Relačné databázy sa riadia piatimi normálnymi formami, ktoré predstavujú usmernenia pre návrh záznamov. Zabraňujú aktualizačným anomáliám a nezrovnalostiam v údajoch. Štvrtá normálna forma sa zaoberá vzťahmi typu many-to-one v databáze.
Funkčná závislosť vs. viachodnotová závislosť
Ak chcete porozumieť viachodnotovej závislosti, je užitočné vrátiť sa k tomu, čo je funkčná závislosť.
Ak atribút X jedinečne určuje atribút Y, potom Y je funkčne závislý od X. Toto je napísané ako X -> Y. Napríklad v tabuľke Študenti nižšie určuje Meno študenta Major:
Student_Name | Major |
---|---|
Ravi | História umenia |
Beth | Chémia |
Túto funkčnú závislosť možno zapísať: Meno_študenta -> Major. Každé meno študenta určuje presne jeden hlavný odbor a nie viac.
Ak chcete, aby databáza sledovala aj športy, ktoré títo študenti venujú, možno si myslíte, že najjednoduchší spôsob, ako to urobiť, je pridať ďalší stĺpec s názvom Šport:
Student_Name | Major | Šport |
---|---|---|
Ravi | História umenia | Futbal |
Ravi | História umenia | Volejbal |
Ravi | História umenia | Tenis |
Beth | Chémia | Tenis |
Beth | Chémia | Futbal |
Problém je v tom, že Ravi aj Beth hrajú viacero športov. Pre každý ďalší šport je potrebné pridať nový riadok.
Táto tabuľka zaviedla viachodnotovú závislosť, pretože odbor a šport sú od seba nezávislé, ale obe závisia od študenta. Toto je jednoduchý príklad a je ľahko identifikovateľný, ale viachodnotová závislosť by sa mohla stať problémom vo veľkej, komplexnej databáze.
Viachodnotová závislosť je napísaná X ->-> Y. V tomto prípade:
Student_Name ->-> Major
Student_Name43345 -6 > Sport
Toto sa číta ako "Meno študenta viacnásobne určuje Majora" a "Meno študenta viacrozhoduje šport."
Viachodnotová závislosť vždy vyžaduje aspoň tri atribúty, pretože pozostáva aspoň z dvoch atribútov, ktoré sú závislé od tretieho.
Viachodnotová závislosť a normalizácia
Tabuľka s viachodnotovou závislosťou porušuje štandard normalizácie štvrtej normálnej formy, pretože vytvára zbytočné redundancie a môže prispieť k nekonzistentným údajom. Aby sme to dosiahli na 4NF, je potrebné rozdeliť tieto informácie do dvoch tabuliek.
Tabuľka nižšie má teraz funkčnú závislosť Student_Name -> Major a žiadne viachodnotové závislosti:
Student_Name | Major |
---|---|
Ravi | História umenia |
Ravi | História umenia |
Ravi | História umenia |
Beth | Chémia |
Beth | Chémia |
Táto tabuľka má tiež jednu funkčnú závislosť Student_Name -> Šport:
Student_Name | Šport |
---|---|
Ravi | Futbal |
Ravi | Volejbal |
Ravi | Tenis |
Beth | Tenis |
Beth | Futbal |
Normalizácia sa často dosahuje zjednodušením zložitých tabuliek tak, aby obsahovali informácie súvisiace s jednou myšlienkou alebo témou, namiesto toho, aby jedna tabuľka obsahovala príliš veľa nesúrodých informácií.