Normalizacija proti denormalizaciji
Relacijske baze podatkov so sestavljene iz relacij (povezanih tabel). Tabele so sestavljene iz stolpcev. Če sta tabeli dve veliki (tj. preveč stolpcev v eni tabeli), lahko pride do anomalij baze podatkov. Če sta tabeli dve majhni (tj. zbirka podatkov je sestavljena iz številnih manjših tabel), bi bilo poizvedovanje neučinkovito. Normalizacija in denormalizacija sta dva procesa, ki se uporabljata za optimizacijo delovanja baze podatkov. Normalizacija minimizira redundance, ki so prisotne v podatkovnih tabelah. Denormalizacija (obratna normalizacija) doda odvečne podatke ali skupinske podatke.
Kaj je normalizacija?
Normalizacija je postopek, ki se izvaja za zmanjšanje odvečnosti, ki so prisotne v podatkih v relacijskih bazah podatkov. Ta postopek bo večinoma razdelil velike tabele na manjše tabele z manj odvečnimi elementi (imenovane »normalne oblike«). Te manjše tabele bodo med seboj povezane prek dobro definiranih odnosov. V dobro normalizirani bazi podatkov bo vsaka sprememba ali modifikacija podatkov zahtevala spreminjanje samo ene tabele. Prvo normalno obliko (1NF), drugo normalno obliko (2NF) in tretjo normalno obliko (3NF) je predstavil Edgar F. Codd. Boyce-Coddovo normalno obliko (BCNF) sta leta 1974 predstavila Codd in Raymond F. Boyce. Definirane so bile višje normalne oblike (4NF, 5NF in 6NF), vendar se le redko uporabljajo.
Tabela, ki je skladna z 1NF, zagotavlja, da dejansko predstavlja relacijo (tj. ne vsebuje nobenih zapisov, ki se ponavljajo) in ne vsebuje nobenih atributov z relacijsko vrednostjo (tj.e. vsi atributi morajo imeti atomske vrednosti). Da bi bila tabela skladna z 2NF, bi morala biti skladna z 1NF in vsak atribut, ki ni del nobenega kandidatnega ključa (tj. neprime atributi), bi moral biti v celoti odvisen od katerega koli od kandidatnih ključev v tabeli. V skladu s Coddovo definicijo naj bi bila tabela v 3NF, če in samo če je ta tabela v drugi normalni obliki (2NF) in bi moral biti vsak atribut v tabeli, ki ne pripada kandidatnemu ključu, neposredno odvisen od vsakega kandidatni ključ te tabele. BCNF (znan tudi kot 3.5NF) zajame nekatere anomalije, ki jih 3NF ne obravnava.
Kaj je denormalizacija?
Denormalizacija je obraten proces procesa normalizacije. Denormalizacija deluje z dodajanjem odvečnih podatkov ali združevanjem podatkov v skupine za optimizacijo delovanja. Čeprav se dodajanje odvečnih podatkov sliši kontraproduktivno, je včasih denormalizacija zelo pomemben postopek za premagovanje nekaterih pomanjkljivosti v programski opremi relacijskih baz podatkov, ki lahko pri normaliziranih bazah podatkov (celo nastavljenih za večjo zmogljivost) povzročijo velike kazni za zmogljivost. To je zato, ker je lahko združevanje več relacij (ki so rezultati normalizacije) za ustvarjanje rezultata poizvedbe včasih počasno, odvisno od dejanske fizične implementacije sistemov baze podatkov.
Kakšna je razlika med normalizacijo in denormalizacijo?
– Normalizacija in denormalizacija sta dva popolnoma nasprotna procesa.
– Normalizacija je postopek delitve večjih tabel na manjše, s čimer se zmanjša količina odvečnih podatkov, medtem ko je denormalizacija postopek dodajanja odvečnih podatkov za optimizacijo delovanja.
– Izvedena je normalizacija, da se preprečijo anomalije podatkovnih baz.
– Denormalizacija se običajno izvede za izboljšanje bralne zmogljivosti baze podatkov, vendar zaradi dodatnih omejitev, ki se uporabljajo za denormalizacijo, lahko pisanje (tj. operacije vstavljanja, posodabljanja in brisanja) postane počasnejše. Zato lahko denormalizirana zbirka podatkov ponudi slabšo zmogljivost pisanja kot normalizirana baza podatkov.
– Pogosto se priporoča, da se "normalizirate, dokler ne boli, denormalizirajte, dokler ne deluje".