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.
A 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).