Viacnásobná závislosť v návrhu databázy

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ý:

študentov
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:

študentov
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:

Študenti a majstri
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:

Študenti a š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í.