Normalizácia relačnej databázy podľa druhej normálovej formy (NF2)
Tabuľka spĺňa druhú normálovú formu (2NF) vtedy, ak spĺňa prvú normálovú formu a navyše aby nekľúčový stĺpec závisel vždy len na celom kľúči, nie iba na jeho časti.
Máme tabuľku, v ktorej evidujeme pracovníkov, ktorým firma pridelila služobné auto.
Meno | Priezvisko | Rodné číslo | značka | model | ŠPZ |
Jozef | Novák | 345431/5432 | Skoda | Superb | BA654GL |
Peter | Kapusta | 123243/9878 | Ford | Kuga | KE387FA |
Dušan | Pekný | 334325/8543 | Chevrolet | Suburban | HE435BK |
Klaudia | Pokorná | 443678/6342 | Hyunday | i30 | BB209AC |
Takto navrhnutá tabuľka spĺňa prvú normálovú formu 1NF, ale nespĺňa druhú normálovú formu 2NF.
Stĺpce meno, priezvisko, značka a model sú nekľúčové stĺpce.
Stĺpec rodné číslo obsahuje hodnoty, ktoré identifikujú konkrétnu osobu (meno a priezvisko). V tomto stĺpci sa nenachádzajú dve rovnaké hodnoty. Možno ho preto považovať za primárny kľúč.
Stĺpec ŠPZ obsahuje hodnoty, ktoré identifikujú konkrétne auto. V tomto stĺpci sa nenachádzajú dve rovnaké hodnoty. Aj tento stĺpec možno ho preto považovať za primárny kľúč.
Problémom je, že značka a model nie sú závislé na rodnom čísle a meno a priezvisko nie sú závislé na ŠPZ.
Ak chceme, aby tabuľka spĺňala druhú normálovú formu (2NF), je potrebné ju rozdeliť na dve tabuľky. Budeme mať tak tabuľku s autami a tabuľku s osobami.
Riešenie:
Tabuľka: auta
Značka | model | ŠPZ | Rodné číslo |
Skoda | Superb | BA654GL | 345431/5432 |
Ford | Kuga | KE387FA | 123243/9878 |
Chevrolet | Suburban | HE435BK | 334325/8543 |
Hyunday | i30 | BB209AC | 443678/6342 |
Tabuľka: osoby
Rodné číslo | Meno | Priezvisko |
345431/5432 | Jozef | Novák |
123243/9878 | Peter | Kapusta |
334325/8543 | Dušan | Pekný |
443678/6342 | Klaudia | Pokorná |
V tabuľke, kde evidujeme autá je primárnym kľúčom stĺpec s ŠPZ. Stĺpček s rodnými číslami je v tomto prípade cudzí kľúč, prostredníctvom ktorého sa odkazujeme na tabuľku s osobami, v ktorej je zase stĺpček s rodnými číslami primárnym kľúčom.