Třetí normální forma ( angl. Third normal form ; zkráceně 3NF ) je jednou z možných normálních forem vztahu v relační databázi . 3NF byl původně formulován E. F. Coddem v roce 1971 .
Relační proměnná R je v 3NF právě tehdy, když jsou splněny následující podmínky:
Vysvětlivky k definici:
Neklíčový atribut relace R je atribut, který nepatří žádnému z kandidátských klíčů R .
Funkční závislost sady atributů Z na sadě atributů X (psáno X → Z , vyslovováno „x určuje z“) je tranzitivní , pokud existuje sada atributů Y taková , že X → Y a Y → Z. Žádná z množin X , Y a Z přitom není podmnožinou druhé, to znamená, že funkční závislosti X → Z , X → Y a Y → Z nejsou triviální a neexistuje ani funkční závislost Y → X.
Definici 3NF ekvivalentní Coddově, ale jinak formulovanou, podal Carlo Zaniolo v roce 1982 . Podle něj je relační proměnná v 3NF právě tehdy, když každá z jejích funkčních závislostí X → A splňuje alespoň jednu z následujících podmínek:
Zaniolova definice jasně definuje rozdíl mezi 3NF a přísnější Boyce-Coddovou normální formou (BCNF): BCNF eliminuje třetí podmínku („ A je klíčový atribut“).
Památné a tradičně popisné shrnutí Coddovy definice 3NF poskytl Bill Kent : každý neklíčový atribut „by měl poskytovat informace o klíči, úplném klíči a nic než klíč“ [1] .
Podmínka závislosti na "úplném klíči" neklíčových atributů zajišťuje, že vztah je v druhé normální formě; a podmínkou pro to, aby záviseli na „nic než na klíči“, je, že jsou ve třetí normální formě.
Chris Date hovoří o Kentově shrnutí jako o „intuitivně atraktivním rysu“ 3NF a poznamenává, že s mírnou úpravou může sloužit také jako definice přísnější Boyce-Coddovy normální formy : „každý atribut musí poskytovat informace o klíči. , úplný klíč a nic jiného než klíč. Kentova verze definice 3NF je méně přísná než Boyce-Coddova normální verze formulace Data, protože první pouze uvádí, že neklíčové atributy závisí na klíčích. Primární atributy (což jsou klíče nebo jejich části) nemusí být vůbec funkčně závislé; každý z nich poskytuje informace o klíči poskytnutím samotného klíče nebo jeho části. Zde je třeba poznamenat, že toto pravidlo platí pouze pro neklíčové atributy, protože jeho použití na všechny atributy zcela zakáže všechny složité alternativní klíče, protože každý prvek takového klíče poruší podmínku „úplný klíč“.
Uvažujme relační proměnnou R1 jako příklad:
Zaměstnanec | oddělení | Telefon |
---|---|---|
Grishin | Účetnictví | 11-22-33 |
Vasiliev | Účetnictví | 11-22-33 |
Petrov | Zásobování | 44-55-66 |
Každý zaměstnanec patří výhradně do jednoho oddělení; každé oddělení má jeden telefon. Atribut Employee je primární klíč. Zaměstnanci nemají osobní telefony a telefonní číslo zaměstnance závisí pouze na oddělení.
V příkladu existují následující funkční závislosti: Zaměstnanec → Oddělení , Oddělení → Telefon , Zaměstnanec → Telefon .
Relační proměnná R1 je ve druhé normální formě , protože každý atribut má neredukovatelnou funkční závislost na potenciálním klíči Zaměstnance .
Vztah Zaměstnanec → Telefon je tranzitivní, takže vztah není ve třetí normální formě.
Rozdělení R1 vede ke dvěma relačním proměnným, které jsou v 3NF:
oddělení | Telefon |
---|---|
Účetnictví | 11-22-33 |
Zásobování | 44-55-66 |
Zaměstnanec | oddělení |
---|---|
Grishin | Účetnictví |
Vasiliev | Účetnictví |
Petrov | Zásobování |
Počáteční vztah Rl, je-li to nutné, lze snadno získat jako výsledek operace spojení vztahů R2 a R3.
normální formy | |
---|---|