Záznam považujeme za nenormalizovaný, obsahuje-li jednu nebo více skupin opakujících se neklíčových položek. Ilustrujme nenormalizovaný záznam na příkladu.
Př.: Prehled_Prac( Cis_Prac, Jmen_Prac, Tarif, Plat, … , Cis_Proj, Dat_Zahaj, Termin, Inv_Naklad, … )
Důsledky:
Kde vznikla chyba?
Na obrázku vidíte nesprávné sloučení dvou entitních typů do jednoho:
Východiskem je rozdělení záznamu na dva, odpovídající oběma entitním typům. Oba entitní typy jsou svázané přes vhodný společný atribut.
Pracovnik( Cis_Prac, Jmen_Prac, Tarif, Plat, … ,)
Projekt(Cis_Proj, Dat_Zahaj, Termin, Inv_Naklad,…,Cis_Prac)
Vazbu mezi oběma záznamy zajišťuje položka Cis_Prac.
Takovým záznamům říkáme, že jsou v 1. normální formě.
Záznam je ve 2. normální formě, je-li již v 1.NF a všechny neklíčové položky jsou funkčně závislé na celém klíči (nestačí částečná závislost).
Př.: Údaje o zboží a firmách, kde je vyráběno .
Zde:
Důsledky:
Řešení spočívá v rozložení na tři tabulky:
Firma(IČO, Adresa,…)
Zboží(Č_Zboží, Název_Zboží, …)
Vyrábí(IČO, Č_Zboží, Množství, … )
Třetí stupeň normalizace vyžaduje, aby záznam neobsahoval tzv. tranzitivní závislosti.
Každý neklíčový atribut musí být funkčně závislý na (celém) klíči (požadavek 2. NF). Je-li tato závislost zprostředkována přes jiný neklíčový atribut, říkáme, že tento atribut je na klíči tranzitivně (zprostředkovaně) závislý.
Podívejme se na obrázek . Zde jsou znázorněna data přehledu zaměstnanců.
Porušení 3.NF nastalo spojením následujícího vztahu 1 : N do jednoho záznamu .
Řešení spočívá v rozdělení na dva záznamy, propojené přes atribut Č_Prac:
Pracovník (RČ,Jméno,Plat,Dat_Nar,Č_Prac)
Pracoviště (Č_Prac, Název_Prac)