Vícehodnotová závislost v databázích
V relační databáze, závislost nastane, 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ů v téže 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í standardu normalizace čtvrtá normální forma. 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 a databáze.
Funkční závislost vs. Vícehodnotová závislost
Abychom porozuměli vícehodnotové závislosti, je užitečné znovu se podívat na to, co a funkční závislost je.
Pokud atribut X jednoznačně určuje atribut Y, pak Y je funkčně závislý na X. Toto je psáno jako X -> Y. Například v tabulce Studenti níže, Student_Name určuje hlavní:
Jméno studenta | Hlavní, důležitý |
---|---|
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:
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 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é a složité databázi.
Vícehodnotová závislost se zapisuje X ->-> Y. V tomto případě:
Jméno studenta ->-> Hlavní, důležitý
Jméno studenta ->-> Sport
To se čte jako "Jméno studenta více určuje majora" a "Jméno studenta více určuje 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řetím.
Vícehodnotová závislost a normalizace
Tabulka s vícehodnotovou závislostí porušuje standard normalizace č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.
Níže uvedená tabulka má nyní funkční závislost Student_Name -> Major a žádné vícehodnotové závislosti:
Jméno studenta | Hlavní, důležitý |
---|---|
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:
Jméno studenta | 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 související informace k jedinému nápadu nebo tématu, spíše než k tomu, aby jedna tabulka obsahovala příliš mnoho nesourodých informací.