V relační databázi nastává závislost, když informace uložené ve stejné databázové tabulce jednoznačně určují jiné informace uložené ve stejné tabulce. Vícehodnotová závislost nastane, když přítomnost jednoho nebo více řádků v tabulce implikuje přítomnost jednoho nebo více dalších řádků ve stejné tabulce. Jinak řečeno, dva atributy (nebo sloupce) v tabulce jsou na sobě nezávislé, ale oba závisí na třetím atributu.
Vícehodnotová závislost brání standardní čtvrté normální formě normalizace. Relační databáze se řídí pěti normálními formami, které představují pokyny pro návrh záznamů. Zabraňují aktualizačním anomáliím a nesrovnalostem v datech. Čtvrtá normální forma se zabývá vztahy mnoho ku jedné v databázi.
Funkční závislost vs. vícehodnotová závislost
Abyste porozuměli vícehodnotové závislosti, je užitečné znovu se podívat, co je to funkční závislost.
Pokud atribut X jednoznačně určuje atribut Y, pak Y je funkčně závislý na X. To je zapsáno jako X -> Y. Například v níže uvedené tabulce Studenti určuje Jméno studenta Major:
Student_Name | Major |
---|---|
Ravi | Historie umění |
Beth | Chemie |
Tato funkční závislost může být zapsána: Student_Name -> Major. Každé jméno studenta určuje přesně jednoho majora a ne více.
Pokud chcete, aby databáze také sledovala sporty, které tito studenti provozují, možná si myslíte, že nejjednodušší způsob, jak toho dosáhnout, je přidat další sloupec s názvem Sport:
Student_Name | Major | 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 v tom, že Ravi i Beth hrají několik sportů. Pro každý další sport je nutné přidat nový řádek.
Tato tabulka zavedla vícehodnotovou závislost, protože obor a sport jsou na sobě nezávislé, ale oba závisí na studentovi. Toto je jednoduchý příklad a snadno identifikovatelný, ale vícehodnotová závislost by se mohla stát problémem ve velké, složité databázi.
Vícehodnotová závislost je zapsána X ->-> Y. V tomto případě:
Student_Name ->-> Major
Student_Name43345 -6 > Sport
Toto se čte jako "Jméno studenta více určuje hlavní obor" a "Jméno studenta více určuje sport."
Závislost s více hodnotami vždy vyžaduje alespoň tři atributy, protože se skládá alespoň ze dvou atributů, které jsou závislé na třetím.
Vícehodnotová závislost a normalizace
Tabulka s vícehodnotovou závislostí porušuje normalizační standard čtvrté normální formy, protože vytváří zbytečné redundance a může přispívat k nekonzistentním datům. Abychom to dostali na 4NF, je nutné tyto informace rozdělit do dvou tabulek.
Tabulka níže má nyní funkční závislost Student_Name -> Major a žádné vícehodnotové závislosti:
Student_Name | Major |
---|---|
Ravi | Historie umění |
Ravi | Historie umění |
Ravi | Historie umění |
Beth | Chemie |
Beth | Chemie |
I když tato tabulka má také jedinou funkční závislost Student_Name -> Sport:
Student_Name | Sport |
---|---|
Ravi | Fotbal |
Ravi | Volejbal |
Ravi | Tenis |
Beth | Tenis |
Beth | Fotbal |
Normalizace se často dosahuje zjednodušením složitých tabulek tak, aby obsahovaly informace související s jedinou myšlenkou nebo tématem, spíše než se snažit, aby jedna tabulka obsahovala příliš mnoho nesourodých informací.