Úplná funkčná závislosť v normalizácii databázy

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:

Prvá normálna forma neplnenia
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:

Prvá normálna zhoda s formulármi
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.

Zamestnanecké oddelenia
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:

zamestnanci
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 :

odbory
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:

Prvá normálna zhoda s formulármi
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).