Viacnásobná závislosť rozdeľuje štvrtý normálny tvar
V relačnej databáze sa závislosť vyskytuje, keď informácie uložené v rovnakej databázovej tabuľke jednoznačne určujú iné informácie uložené v rovnakej 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. Inak povedané, dva atribúty (alebo stĺpce) v tabuľke sú navzájom nezávislé, ale oba závisia od tretieho atribútu.
Viachodnotová závislosť zabraňuje normalizácii štandardnej štvrtej normálnej formy (4NF). Relevantné databázy sledujú päť normálnych foriem, ktoré predstavujú usmernenia pre návrh záznamov. Zabraňujú aktualizácii anomálií a nezrovnalostiam v údajoch. Štvrtá normálna forma sa zaoberá vzťahmi typu "mnoho k jednému" v databáze .
Funkčná závislosť vs. viachodnotová závislosť
Ak chcete pochopiť viachodnotovú závislosť, je užitočné prehodnotiť funkčnú závislosť.
Ak atribút X jednoznačne určuje atribút Y, potom Y je funkčne závislý na X. To je napísané ako X -> Y. Napríklad v nižšie uvedenej tabuľke Students_Name určuje hlavný:
Meno študenta | major |
---|---|
Ravi | História umenia |
Beth | chémia |
Táto funkčná závislosť môže byť napísaná: Student_Name -> Major . Každý Student_Name určuje presne jedného Majora a nie viac.
Ak chcete, aby databáza takisto sledovala športy, ktoré títo študenti absolvujú, možno si myslíte, že najjednoduchší spôsob, ako to urobiť, je jednoducho pridať ďalší stĺpec s názvom Šport:
Meno študenta | major | šport |
---|---|---|
Ravi | História umenia | kopaná |
Ravi | História umenia | Volejbal |
Ravi | História umenia | tenis |
Beth | chémia | tenis |
Beth | chémia | kopaná |
Problémom je, ž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 majster a šport sú navzájom nezávislí, ale obaja závisia od študenta.
Jedná sa o jednoduchý príklad a ľahko sa dá identifikovať, ale závislosť na viacerých miestach by sa mohla stať problémom vo veľkej a komplexnej databáze.
Viacnásobná závislosť je napísaná X -> -> Y. V tomto prípade:
Student_Name -> -> Majster
Student_Name -> -> Šport
Toto je čítané ako "Student_Name multidetermines Major" a "Student_Name multidetermines Sport".
Viachodnotová závislosť vždy vyžaduje najmenej tri atribúty, pretože pozostáva z najmenej dvoch atribútov, ktoré sú závislé od tretej.
Viacnásobná závislosť a normalizácia
Tabuľka s viachodnotovou závislosťou porušuje normalizačnú normu štvrtého normálneho formátu (4NK), pretože vytvára zbytočné prepúšťanie a môže prispieť k nekonzistentným údajom. Aby ste to dosiahli až do 4NF, je potrebné tieto informácie rozdeliť do dvoch tabuliek.
Nasledujúca tabuľka má teraz funkčnú závislosť Student_Name -> Major a žiadne viacnásobné závislosti:
Meno študenta | major |
---|---|
Ravi | História umenia |
Ravi | História umenia |
Ravi | História umenia |
Beth | chémia |
Beth | chémia |
Zatiaľ čo táto tabuľka má tiež jednu funkčnú závislosť Student_Name -> Šport:
Meno študenta | šport |
---|---|
Ravi | kopaná |
Ravi | Volejbal |
Ravi | tenis |
Beth | tenis |
Beth | kopaná |
Je zrejmé, že normalizácia sa často rieši zjednodušením zložitých tabuliek, ktoré obsahujú informácie týkajúce sa jednej myšlienky alebo témy, a nie snažia sa vytvoriť jednu tabuľku obsahujúcu príliš veľa rozdielnych informácií.