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.

Procházení databází a hledání dárců, kteří by se mohli stát dobrými členy správní rady.
stevecoleimages/Vetta/Getty Images

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
Studenti


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
Studenti

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
Studenti a majori

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
Studenti a sport

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í.