Wednesday, June 22, 2011

SW: Normalizace a normalove formy (DBS) (Relacny model)

Normalizacia je proces postupnej transformacie tabulky do vhodnejsieho tvaru, ktory je zalozeny na teorii zavislosti. Proces prebieha postupnou dekompoziciou. Aky je vhodny tvar vieme podla zavedenych normalovych foriem. Ak robime dekompoziciu, tak ta musi 
  • 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? 
  1. najdeme kluce, ktore nie su tranzitivne 
  2. "rozpadneme to" na viac relaci podla najdenych tranzitivnych zavislosti 

Firma -> vsetko 
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: 
  1. vyhladanie fcnych zavislosti medzi kand. klucmi 
  2. 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.