Plná funkčná závislosť je stav normalizácie databázy, ktorý sa rovná normalizačnej norme druhej normálnej formy (2NF) . Stručne povedané, znamená to, že spĺňa požiadavky prvého normálneho formátu (1NF) a všetky atribúty bez kľúča sú plne funkčne závislé od primárneho kľúča.
To nie je tak zložité, ako to môže znieť. Pozrime sa na to podrobnejšie.
Zhrnutie prvej normálnej formy
Predtým, než môže byť databáza plne funkčná závislá, musí najprv vyhovovať normálnemu prvému formuláru .
To všetko znamená, že každý atribút musí mať jednu atómovú hodnotu.
Napríklad nasledujúca tabuľka nie je v súlade s 1NF, pretože zamestnanec Tina je prepojený na dve miesta, obidva v jednej bunke:
zamestnanec | umiestnenia |
---|---|
John | Los Angeles |
tina | Los Angeles, Chicago |
Povolenie tohto dizajnu môže negatívne ovplyvniť aktualizácie údajov alebo záznamy. Aby bola zabezpečená zhoda s 1NF, usporiadajte tabuľku tak, aby všetky atribúty (alebo bunky stĺpcov) mali jednu hodnotu:
zamestnanec | umiestnenia |
---|---|
John | Los Angeles |
tina | Los Angeles |
tina | chicago |
Ale 1NF stále nestačí, aby sa predišlo problémom s údajmi.
Ako 2NF funguje na zabezpečenie plnej závislosti
Ak chcete byť úplne závislí, všetky atribúty kandidátskych kľúčov musia závisieť od primárneho kľúča. (Nezabudnite, že kandidátsky kľúčový atribút je akýkoľvek kľúč (napríklad primárny alebo cudzí kľúč), ktorý sa používa na jednoznačnú identifikáciu databázového záznamu.
Návrhári databázy používajú notáciu na popis závislých vzťahov medzi atribútmi:
Ak atribút A určuje hodnotu B, napíšeme to A -> B - čo znamená, že B je funkčne závislé od A. V tomto vzťahu A určuje hodnotu B, zatiaľ čo B závisí od A.
Napríklad v nasledujúcej tabuľke Zamestnanecké oddelenia , EmployeeID a DeptID sú obe kandidátske kľúče: EmployeeID je primárny kľúč tabuľky, zatiaľ čo DeptID je cudzí kľúč.
Akýkoľvek iný atribút - v tomto prípade názov zamestnanca a DeptName - musí závisieť od primárneho kľúča, aby získal jeho hodnotu.
Identifikačné číslo zamestnanca | Meno zamestnanca | DeptID | DEPTNAME |
---|---|---|---|
Emp1 | John | Dept001 | financie |
Emp2 | tina | Dept003 | odbyt |
Emp3 | carlos | Dept001 | financie |
V tomto prípade tabuľka nie je úplne závislá, pretože zatiaľ čo EmployeeName závisí od primárneho kľúča EmployeeID, DeptName závisí namiesto DeptID. Toto sa nazýva čiastočná závislosť .
Aby bola táto tabuľka v súlade s 2NF, je potrebné oddeliť údaje do dvoch tabuliek:
Identifikačné číslo zamestnanca | Meno zamestnanca | DeptID |
---|---|---|
Emp1 | John | Dept001 |
Emp2 | tina | Dept003 |
Emp3 | carlos | Dept001 |
Odstránime atribút DeptName z tabuľky Zamestnanci a vytvoríme novú tabuľku Oddelenia :
DeptID | DEPTNAME |
---|---|
Dept001 | financie |
Dept002 | Ľudské zdroje |
Dept003 | odbyt |
Teraz sú vzťahy medzi tabuľkami úplne závislé, alebo v 2NF.
Prečo je dôležitá plná závislosť
Plná závislosť medzi atribútmi databázy pomáha zaistiť integritu údajov a vyhnúť sa anomáliám údajov.
Zvážte napríklad tabuľku v predchádzajúcej časti, ktorá sa drží iba 1NF. Tu je to znova:
zamestnanec | umiestnenia |
---|---|
John | Los Angeles |
tina | Los Angeles |
tina | chicago |
Tina má dve záznamy. Ak aktualizujeme jeden bez toho, že by sme zistili, že existujú dve, výsledkom by boli nekonzistentné údaje.
Alebo čo ak chceme pridať zamestnanca do tejto tabuľky, ale ešte nepoznáme polohu? Môžeme byť zakázaní dokonca pridať nového zamestnanca, ak atribút Location nepovoľuje hodnoty NULL.
Plná závislosť nie je celá situácia, pokiaľ ide o normalizáciu. Musíte sa uistiť, že vaša databáza je v tretej normálnej podobe (3NF).