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ří.

Úprava vedoucí ke splnění první normální formy
Úprava vedoucí ke splnění první normální formy

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.

Vytvořte si webové stránky zdarma! Tento web je vytvořený pomocí Webnode. Vytvořte si vlastní stránky zdarma ještě dnes! Vytvořit stránky