- byt bezstratova pri spatnom spojeni
- zachovavat zavislosti
- odstranovat opakovane informacie
Model DB normalizujeme tak, aby sme dospeli do jednej z normalovych foriem. Normalova forma je sada pravidiel, podla ktorych by sa malo postupovat pri transformacii struktury relaci modelu tak aby doslo k
- odstraneniu redundantnych dat
- obmedzeniu zlozitosti
- zabrananiu aktualizacnym anomaliam
Vedie k tabulkam, ktore sa lahko udrzuju a efektivne sa nad nimi vykonavaju dotazy.
1NF
- kazdy atribut obsahuje len atomicke hodnoty
1. obrazok vpravo nie je v 1NF, pretoze je mozna dekompozicia udajov na nedelitelne, atomicke, hodnoty.
2. obrazok je uz spravne, pretoze kazdy atribut obsahuje len atomicke hodnoty.
2NF
- relace je v 1NF
- neexistuju ciastocne zavislosti neklucovych atributov na kluci (lubovolnom)
Obrazok vpravo je v 1NF, pretoze kazdy atribut obsahuje len atomicke hodnoty.
Firma -> Sidlo
Firma, DB server -> vsetko
Firma -> Sidlo nie je v poriadku, pretoze v 2NF nemoze neklucovy atribut zaviest na podkluci. Dosledkom je redundancia hodnoty sidlo.
Tento priklad je v 2NF, pretoze
PSC -> Mesto -> Stat, takze
PSC -> vsetko podla armstrongovho pravidla tranzitivty.
3NF
- splnuje 2NF
- ziadny z atributov 3NF nie je tranzitivne zavisly na kluci
- tranzitivna zavislost je taka zavislost, medzi minimalne 2-ma atributmi a klucom, kde jeden atribut je funkcne zavisly na kluci a druhy atribut je funkcne zavisly na prvom atribute
- vsetky neklucove atributy su navzajom nezavisle
Ako na 3NF?
- najdeme kluce, ktore nie su tranzitivne
- "rozpadneme to" na viac relaci podla najdenych tranzitivnych zavislosti
PSC -> sidlo
takze sme v 2NF, pretoze ziaden atribut nie je zavisly na klucovom atribute.
nie je v 3NF, pretoze plati, ze Firma -> Sidlo, Firma -> PSC, PSC -> Sidlo a tak sidlo je tranzitivne zavisle na Firma. Dosledkom je redundantnost hodnot atributu sidla.
Pri hladani BCNF a 3NF postupujeme vacsinou tak, ze hladame tranzitivitu, ktora porusuje podmienky 3NF alebo BCNF.
BCNF alebo Boyce Coddova normalova forma
- je to obmena 3NF
- kazdy atribut je netranzitivne zavisly na kluci
- pre kazdu zavislost plati bud
- ze je trivialna
- ze urcujuci atribut je nadkluc
Postup:
- vyhladanie fcnych zavislosti medzi kand. klucmi
- rozpadneme zavislosti na viac relaci
Letadlo, Den -> vsetko
Pilot, Den -> vsetko
Destinace -> Pilot
nakolko Destinace nie je kluc, tak priklad je v 3NF, pretoze neporusuje tranzitivitu. Nie je ale v BCNF, pretoze Destinace urcuje Pilota a destinace nie je nadkluc, ani nie zavislost nie je trivialna. Trivialna nie je preto, ze Pilot nie je podmnozinou Destinacie. A destinacia nie je nadkluc, pretoze neidentifikuje kazdy riadok tabulky jednoznacne.
4NF
- musi byt v BCNF a popisovat len pricinnu suvislost (1 fakt)
- v jednej relaci sa nesmu spojovat nezavisle opakovane skupiny
4NF nie je o funkcnych zavislostiach, ale o tzv. multizavislostiach:
"Schema relace R(A): Jsou-li dány dvě množiny atributů C, D, které jsou podmnožninou A, pak mulitávislost D na C vychází z intuitivní představy, že jedné C-hodnotě se přiřadí několik D-hodnot."
5NF
Relace je v 5NF, pokial je v 4NF nie je mozne do nej pridat dalsi atribut (skupinu atributov) tak, aby sa vplyvom skrytych zavislosti rozpadla na niekolko ciastocnych relaci.