Vícehodnotová závislost rozděluje čtvrtou normální formu
V relační databázi dochází k závislostem, pokud informace uložené ve stejné tabulce databáze jednoznačně určují další informace uložené ve stejné tabulce. Vícehodnotová závislost nastane, když přítomnost jednoho nebo více řádků v tabulce znamená přítomnost jednoho nebo více řádků v téže tabulce. Jinými slovy, dva atributy (nebo sloupce) v tabulce jsou navzájem nezávislé, ale oba závisí na třetím atributu.
Vícehodnotová závislost zabraňuje normalizaci standardní čtvrté normální podobě (4NF). Relační databáze vycházejí z pěti normálních formulářů, které představují pokyny pro návrh záznamů. Zabraňují aktualizaci anomálií a nesrovnalostem v datech. Čtvrtá normální forma se zabývá vztahy typu "mnoho k jednomu" v databázi .
Funkční závislost vs. vícehodnotová závislost
Chcete-li pochopit vícehodnotovou závislost, je užitečné přehodnotit funkční závislost.
Pokud atribut X jednoznačně určuje atribut Y, pak Y je funkčně závislý na X. To je napsáno jako X -> Y. Například ve Studentské tabulce níže Student_Name určuje Major:
Jméno studenta | Hlavní, důležitý |
---|---|
Ravi | Historie umění |
Beth | Chemie |
Tuto funkční závislost lze zapsat: Student_Name -> Major . Každý Student_Name určuje přesně jedno majora a ne více.
Chcete-li, aby databáze sledovala také sporty, které tito studenti přijali, můžete si myslet, že nejjednodušší způsob, jak to udělat, je jen přidat další sloupec s názvem Sport:
Jméno studenta | Hlavní, důležitý | Sport |
---|---|---|
Ravi | Historie umění | Fotbal |
Ravi | Historie umění | Volejbal |
Ravi | Historie umění | Tenis |
Beth | Chemie | Tenis |
Beth | Chemie | Fotbal |
Problém je, že Ravi i Beth hrají více sportů. Pro každý další sport je nutné přidat nový řádek.
Tato tabulka zavedla vícehodnotovou závislost, protože hlavní a sport jsou navzájem nezávislé, ale oba závisí na studentovi.
Jedná se o jednoduchý příklad a lze snadno rozpoznat, ale závislost na vícedávkových místech by se mohla stát velkým a komplexním databází.
Vícehodnotovou závislost je napsána X -> -> Y. V tomto případě:
Student_Name -> -> Major
Student_Name -> -> Sport
Toto je přečteno jako "Student_Name multidetermines Major" a "Student_Name multidetermines Sport".
Vícehodnotová závislost vždy vyžaduje alespoň tři atributy, protože se skládá z alespoň dvou atributů, které jsou závislé na třetině.
Vícehodnotová závislost a normalizace
Tabulka s vícehodnotovou závislostí porušuje normalizační normu Čtvrtého normálního formuláře (4NK), protože vytváří zbytečné propouštění a může přispívat k nekonzistentním datům. Chcete-li toto přinést až na 4NF, je nutné tyto informace rozdělit do dvou tabulek.
Níže uvedená tabulka má nyní funkční závislost Student_Name -> Major a žádné závislosti na více hodnotách:
Jméno studenta | Hlavní, důležitý |
---|---|
Ravi | Historie umění |
Ravi | Historie umění |
Ravi | Historie umění |
Beth | Chemie |
Beth | Chemie |
Zatímco tato tabulka má také jednu funkční závislost Student_Name -> Sport:
Jméno studenta | Sport |
---|---|
Ravi | Fotbal |
Ravi | Volejbal |
Ravi | Tenis |
Beth | Tenis |
Beth | Fotbal |
Je zřejmé, že normalizace je často řešena zjednodušením složitých tabulek, které obsahují informace týkající se jediného nápadu nebo tématu, spíše než pokusit se vytvořit jednu tabulku obsahující příliš mnoho nesourodých informací.