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

Plná funkční závislost je stav normalizace databáze, který se rovná normalizační normě druhého normálního formátu (2NF) . Stručně řečeno, to znamená, že splňuje požadavky prvního normálního formuláře (1NF) a všechny atributy bez klíče jsou plně funkční závislé na primárním klíči.

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

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

Předtím, než může být databáze plně funkční závislá, musí nejprve vyhovět normálnímu prvnímu formuláři .

To všechno znamená, že každý atribut musí mít jednu atomovou hodnotu.

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

První normální nesoulad s formami
Zaměstnanec Umístění
John Los Angeles
Tina Los Angeles, Chicago

Povolení tohoto návrhu by mohlo negativně ovlivnit aktualizace nebo záznamy dat. Aby byla zajištěna shoda s 1NF, uspořádejte tabulku tak, aby všechny atributy (nebo sloupcové buňky) obsahovaly jednu hodnotu:

První dodržování normální podoby
Zaměstnanec Umístění
John Los Angeles
Tina Los Angeles
Tina Chicago

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

Jak 2NF pracuje na zajištění plné závislosti

Chcete-li být zcela závislí, musí být všechny atributy klíčových kandidátů závislé na primárním klíči. (Pamatujte si, že klíčovým atributem klíče je libovolný klíč (například primární nebo cizí klíč) používaný k jednoznačné identifikaci záznamu databáze.

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

Jestliže atribut A určuje hodnotu B, zapíšeme to 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 oddělení zaměstnanců jsou EmployeeID a DeptID kandidátní klíče: EmployeeID je primární klíč tabulky, zatímco DeptID je cizí klíč.

Jakýkoli jiný atribut - v tomto případě název_emulti a DeptName - musí záviset na primárním klíči, aby získal jeho hodnotu.

Zaměstnanecké oddělení
EmployeeID Jméno zaměstnance DeptID DeptName
Emp1 John Dept001 Finance
Emp2 Tina Dept003 Odbyt
Emp3 Carlos Dept001 Finance

V takovém případě tabulka není plně závislá, protože zatímco EmployeeName závisí na primárním klíči EmployeeID, DeptName závisí místo toho na DeptID. To se nazývá částečná závislost .

Aby byla tato tabulka v souladu s 2NF, musíme data oddělit do dvou tabulek:

Zaměstnanci
EmployeeID Jméno zaměstnance DeptID
Emp1 John Dept001
Emp2 Tina Dept003
Emp3 Carlos Dept001

Atribut DeptName odebereme z tabulky Zaměstnanci a vytvoříme novou tabulku Oddělení :

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 zabraňuje vzniku anomálií dat.

Zvažte například tabulku ve výše uvedené části, která drží pouze 1NF. Zde je opět:

První dodržování normální podoby
Zaměstnanec Umístění
John Los Angeles
Tina Los Angeles
Tina Chicago

Tina má dva záznamy. Pokud aktualizujeme jednu, aniž bychom si uvědomili, že existují dva, výsledek by byl nekonzistentní.

Nebo co když chceme do tohoto stolu přidat zaměstnance, ale dosud neznáme polohu? Mohli bychom být zamítnuty dokonce přidat nového zaměstnance, pokud atribut Umístění nepovoluje hodnoty NULL.

Plná závislost však není celá situace, pokud jde o normalizaci. Musíte se ujistit, že vaše databáze je ve třetím normálním formuláři (3NF).