Plně funkční závislost v normalizaci databáze

Plně funkční závislost je stav normalizace databáze což se rovná normalizačnímu standardu Druhé normální formy (2NF). Stručně to znamená, že splňuje požadavky First Normal Form (1NF) a všechny neklíčové atributy jsou plně funkčně závislé na primárním klíči.

Není to tak složité, jak to může znít. Podívejme se na to podrobněji.

Shrnutí prvního normálního formuláře

Než může být databáze plně funkčně závislá, musí nejprve vyhovovat První normální forma. To vše znamená, že každý atribut musí obsahovat jednu atomickou hodnotu.

Například následující tabulka není v souladu s 1NF, protože zaměstnankyně Tina je spojena se dvěma místy, obě v jedné buňce:

Zaměstnanec Umístění
John Los Angeles
Tina Los Angeles, Chicago

Povolení tohoto návrhu by mohlo negativně ovlivnit aktualizace dat nebo položky. Chcete-li zajistit shodu s 1NF, změňte uspořádání tabulky tak, aby všechny atributy (nebo buňky sloupců) obsahovaly jedinou hodnotu:

Zaměstnanec Umístění
John Los Angeles
Tina Los Angeles
Tina  Chicago

Ale 1NF stále nestačí, aby se předešlo problémům s daty.

Jak 2NF zajišťuje plnou závislost

Aby byly všechny atributy nekandidátského klíče plně závislé, musí záviset na primárním klíči.

kandidátský klíč atribut je jakýkoli klíč (například primární nebo cizí klíč) používaný k jednoznačné identifikaci databázového záznamu.

Návrháři databází používají notaci k popisu závislých vztahů mezi atributy:

Pokud atribut A určuje hodnotu B, zapíšeme toto A -> B, což znamená, že B je funkčně závislý na A. V tomto vztahu A určuje hodnotu B, zatímco B závisí na A.

Například v následující tabulce zaměstnaneckých oddělení ID zaměstnance a DeptID jsou oba kandidátské klíče: ID zaměstnance je primární klíč tabulky while DeptID je cizí klíč. Jakékoli další atributy – v tomto případě Jméno zaměstnance a DeptName—musí záviset na primárním klíči, aby získal jeho hodnotu.

ID zaměstnance Jméno zaměstnance DeptID DeptName
Emp1 John Dept001 Finance
Emp2 Tina Dept003 Odbyt
Emp3 Carlosi Dept001 Finance

V tomto případě není tabulka plně závislá, protože zatímco jméno zaměstnance závisí na primárním klíči ID zaměstnance, DeptName závisí místo toho na DeptID. Tomu se říká částečná závislost.

Aby tato tabulka odpovídala 2NF, musíme data rozdělit do dvou tabulek: tabulky Zaměstnanci a tabulky Oddělení. Zde je tabulka Zaměstnanci:

ID zaměstnance Jméno zaměstnance DeptID
Emp1 John Dept001
Emp2 Tina Dept003
Emp3 Carlosi Dept001

Odstraňujeme DeptName atribut z tabulky Zaměstnanci a vytvořte novou tabulku Oddělení:

DeptID DeptName
Dept001 Finance
Dept002 Lidské zdroje
Dept003 Odbyt

Nyní jsou vztahy mezi tabulkami plně závislé nebo v 2NF.

Proč je důležitá plná závislost

Plná závislost mezi atributy databáze pomáhá zajistit integritu dat a vyhnout se datovým anomáliím.

Vezměme si například tabulku ve výše uvedené části, která se drží pouze 1NF. Tady je to znovu:

Zaměstnanec Umístění
John Los Angeles
Tina Los Angeles
Tina Chicago

Tina má dva rekordy. Pokud bychom aktualizovali jeden, aniž bychom si uvědomili, že jsou dva, výsledkem by byla nekonzistentní data.

Nebo co když chceme přidat zaměstnance do této tabulky, ale zatím neznáme místo? Může nám být zakázáno dokonce přidat nového zaměstnance, pokud Umístění atribut neumožňuje hodnoty NULL.

Úplná závislost však není úplným obrazem, pokud jde o normalizaci. Musíte se ujistit, že je vaše databáze v Třetí normální forma (3NF).