Normalizácia relačnej databázy podľa druhej normálovej formy (NF2)

Od Peter Tokoš

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.

MenoPriezviskoRodné čísloznačkamodelŠPZ
JozefNovák345431/5432SkodaSuperbBA654GL
PeterKapusta123243/9878FordKugaKE387FA
DušanPekný334325/8543ChevroletSuburbanHE435BK
KlaudiaPokorná443678/6342Hyundayi30BB209AC

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čkamodelŠPZRodné číslo
SkodaSuperbBA654GL345431/5432
FordKugaKE387FA123243/9878
ChevroletSuburbanHE435BK334325/8543
Hyundayi30BB209AC443678/6342

Tabuľka: osoby

Rodné čísloMenoPriezvisko
345431/5432JozefNovák
123243/9878PeterKapusta
334325/8543DušanPekný
443678/6342KlaudiaPokorná

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.