Co je to normalizace databáze
Normalizace je postup, který popisuje, jak správně navrhnout a vytvořit strukturu databáze. Databáze by měla vyhovovat tzv. normálním formám, které určují, jak navrhnout tabulky, aby se zamezilo různým chybám při následné práci s databází, jako jsou například duplicity, nebo nekonzistentní data. Existuje několik normálních forem, běžně se však vyžaduje dodržení prvních tří. Z dlouhodobého hlediska je tvorba dobře navržených tabulek klíčová k efektivně a správně fungující databázi.
První normální forma (1 NF)
Relace je v první normální formě, pokud každý její atribut obsahuje jen atomické hodnoty. Tedy hodnoty z pohledu databáze již dále nedělitelné.
Příklad: Máme tabulku se seznamem lidí, ve které evidujeme jméno, adresu a telefony. S takto navrženou tabulkou by však vylo spoustu problémů (například špatné vyhledávání dle příjmení, města, telefonu...). Z tohoto důvodu musíme položky jméno, adresa a telefon rozdělit na atomické hodnoty. Atribut jmeno a adresa tedy rozdělíme na části (jmeno, prijmeni, město, ulice, ČP) a pro atribut telefon vytvoříme novou tabulku telefon, ve které budeme odkazovat na id osoby, které telefonní číslo patří.

Druhá normální forma (2 NF)
Relace se nachází v druhé normální formě, pokud splňuje podmínky první normální formy a každý neklíčový atribut je plně závislý na celém primárním klíči (nejen na jeho části). Z této definice vyplývá, že druhou normální formu musíme řešit pouze v případě, že máme vícehodnotový primární klíč - je složen z více sloupců (tabulka, která má pouze jeden primární klíč automaticky splňuje 2NF).
Příklad: Máme tabulku sklad, ve které evidujeme název produktu, název výrobce, telefon na výrobce, cenu a dostupné množství. Jako primární klíč je použita kombinace atributů název a výrobce. Je patrné, že položka telefon_vyrobce se nevztahuje k celému primárnímu klíči, pouze k jeho části - výrobce. Představme si situaci, že prodáme všechny produkty od jednoho výrobce a záznamy odstraníme. Tím, že jsme je odstranili, nám zmizí i telefonní číslo na výrobce. Správným řešením je rozklad na dvě tabulky, tabulku výrobek a tabulku výrobce. Ještě vhodnějším způsobem by bylo vytvoření primárního klíče v tabulce výrobek a každému výrobku přiřadit unikátní (jedinečné) ID. (Realizace druhé NF vyžaduje ovšem vícehodnotové klíče)

Třetí normální forma (3 NF)
V této formě se nachází tabulka, splňuje-li předchozí dvě formy a všechny neklíčové atributy jsou vzájemně nezávislé. Abychom případně zrušili tuto závislost, musíme jako v předchozím případě, rozdělit tabulku do dvou či více tabulek.
Příklad: Máme internetový magazín, do kterého svými články přispívá více autorů. V databázi máme tabulku články, která obsahuje ID, titulek, text, datum, přezdívku autora a e-mailovou adresu. Autorův e-mail se však spíše než na samotném článku závislý na autorovi. Oddělíme tedy údaje o autorovi do nové tabulky. Tím nám navíc odpadá spousta opakujících se údajů, v případě publikování více článků jedním autorem. Navíc máme tabulku se seznamem autorů se kterou můžeme také různě pracovat.

