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 Hlavní a žádné další. 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: 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ě: Jméno studenta ->-> Hlavní, důležitýJméno studenta->-> 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ě. 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: Zatímco tato tabulka má také jednu funkční závislost Student_Name -> Sport: 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í.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 Vícehodnotová závislost a normalizace
Jméno studenta Hlavní, důležitý Ravi Historie umění Ravi Historie umění Ravi Historie umění Beth Chemie Beth Chemie Jméno studenta Sport Ravi Fotbal Ravi Volejbal Ravi Tenis Beth Tenis Beth Fotbal