Normalizace databáze
Normalizace databáze je v informatice označení postupu, kdy je struktura dat v relační databázi přeorganizována tak, aby využívala výhody relačního modelu dat. Normalizace databáze umožňuje data efektivněji ukládat, prohledávat, třídit i zpracovávat. Při normalizaci jsou v databázi měněny atributy (sloupce) jednotlivých tabulek a zaváděny mezi nimi výhodné vztahy (relace), je omezována redundance uložených dat (vět) a je brán ohled na řešení problému s případnou nekonzistencí dat.
Charakteristika
V relačním modelu jsou data uložena v tabulkách, na které má jisté požadavky. Při splnění požadavků je tabulka označována jako normalizovaná. Pokud nejsou tyto požadavky splněny, jsou označovány jako nenormalizované a proces jejich převodu na tabulky se označuje jako normalizace. Při tomto procesu dochází k odstraňování nedostatkce je rozdělen do několika kroků a po dokončení každého z nich se tabulka nachází v určité normální formě. V praxi se většinou normalizuje do třetí normální formy, vyšší normální formy je vcelku obtížné porušit a vyžadují relativně velké znalosti, stejně jako návrh databází takové velikosti, kde je možné je porušit.
Normální formy
- 0NF: Alespoň jeden atribut obsahuje více než jednu hodnotu.
- 1NF: Každý atribut obsahuje pouze atomické hodnoty.
- 2NF: Každý neklíčový atribut je plně závislý na každém kandidátním klíči. (Neklíčovým atributem rozumíme atribut, který není součástí žádného kandidátního klíče.)
- 3NF: Všechny neklíčové atributy musí být vzájemně nezávislé.
- BCNF: Atributy, které jsou součástí primárního klíče, musí být vzájemně nezávislé.
- 4NF: Relace popisuje pouze příčinnou souvislost mezi klíčem a atributy.
- 5NF: Relaci již není možno bezeztrátově rozložit.
Pro splnění určité normální formy je nutné splnit i ty předchozí. V praxi se obvykle používají pouze první tři.
Ukázky záznamu v databázi
Adresa |
---|
Jan Novák, Nádražní 42, Zlín 12300 |
Jméno | Příjmení | Ulice | Číslo popisné | Město | Směrovací číslo |
---|---|---|---|---|---|
Jan | Novák | Nádražní | 42 | Zlín | 12300 |