Na úvod několik poznámek: Je třeba si uvědomit, že v relační databázi tabulky definují uložení dat a vztahy mezi nimi. V tomto příkladě si ukážeme jenom "kousek databáze" - normalizaci jedné tabulky a i z této tabulky vezmeme jen několik řádku. Jde o pochopení principu. Barevně vyznačím primární klíč.
Předem si rovněž uvědomte, že v databázi nebudeme většinou vkládat data do tabulek a manipulovat s nimi. Tabulky zůstanou pro ukládání dat a budou "na pozadí". Pro práci s hodnotami budeme používat sestavy a formuláře. To jen proto, aby vás předem neznechutil rozrůstající se počet tabulek.
Normalizujte tabulku databáze
Provedem základní úpravu:
Výsledek je mnohem lepší – jsem schopen žáka třídit podle jména i příjmení – jsem schopen lépe pracovat se známkami – pokud by bylo dáno, že je maximálěn 6 známek z ČJL a maximálně 5 z Mat – dalo by se mluvit o normalizaci, ale v reále neznám předem počty známek – takže tabulka není navržena vhodně a budu v normalizaci pokračovat.První normální forma
Máme tabulku v první normální formě - žádne opakující se skupiny. Tabulce nyní chybí primární klíč - můžeme to vyřešít nějakým ID, ale je to zbytečné - tabulka má viditelně mnoho nedostatků, takže ji pojďme upravovat dále.
Vidíme, že v tabulce máme mnoho duplicitních dat, to je ale nepřijatelné - obrovským způsobem nám vzrůstá nebezpečí chyby v případě nějaké změny (jméno vyučujícího, studenta, předmětu).
Druhá normální formaPostupovat budeme tak, že tabulku rozdělíme na několi „menších“ tabulek
Tohle už vypadá „docela dobře“ - tahle databáze už by byla použitelná, ale pro převod do 3NF je třeba odstranit problém v tabulce výuka – Vyučující a předmět jsou závisli nejen na ID. Ale i na sobě navzájem. Mohli bychom to vyřešit rozdělením na dvě tabulky – ale mezi nimi by existoval vztah M:N (mnoho:mnoho) – což není ideální, proto tuto tabulku raději rozdělíme na tři.Třetí normální forma Pouze tabulku výuka rozdělíme na tři tabulky.
A máme výsledek v třetí normální formě.
V tabulce výuka jsou ID vyučující a ID předmět cizími klíči. Tabulky jsou propojeny svými klíči. Vidíte, že všechyn údaje z první tabulky se vyskytují i zde, ale nedochází k dupliakci údajů.
Původní jedna tabulka se nám rozpadla na pět. Výsledek vypadá mnohem složitěji než na začátku, ale výhodou je naprostá jednoznačnost.
A opět opakuji v reále nemusíme pracovat s těmito tabulkami – ty fungují na pozadí. V reále můžeme klidně pracovat s jedním formulářem, který vypadá podobně jako první tabulka – pokud se vám to takto líbí, ale data se budou na pozadí ukládat do těchto tabulek. |