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 dělá ne dodržujte 1NF, protože zaměstnanec Tina je spojen se dvěma místy, oba 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 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
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:
Pokud atribut A určuje hodnotu B, zapíšeme toA -> B- 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 následující Zaměstnanecké oddělení tabulka EmployeeID a DeptID jsou klíče kandidátů: 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.
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. Tomu se říká částečná závislost .
Aby byla tato tabulka v souladu s 2NF, musíme data oddělit do dvou tabulek:
EmployeeID | Jméno zaměstnance | DeptID |
---|---|---|
Emp1 | John | Dept001 |
Emp2 | Tina | Dept003 |
Emp3 | Carlos | Dept001 |
Atribut DeptName odebereme z Zaměstnanci tabulku a vytvořit 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 zabraňuje vzniku anomálií dat.
Zvažte například tabulku ve výše uvedené části, která drží pouze 1NF. Zde je opět:
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).