Normalizacija vs Denormalizacija
Relacijske baze podataka se sastoje od relacija (povezanih tabela). Tabele su sastavljene od kolona. Ako su tabele dve velike (tj. previše kolona u jednoj tabeli), može doći do anomalija baze podataka. Ako su tabele dvije male (tj. baza podataka se sastoji od mnogo manjih tabela), to bi bilo neefikasno za postavljanje upita. Normalizacija i denormalizacija su dva procesa koja se koriste za optimizaciju performansi baze podataka. Normalizacija minimizira redundancije koje su prisutne u tablicama podataka. Denormalizacija (obrnuta od normalizacije) dodaje suvišne podatke ili grupne podatke.
Šta je normalizacija?
Normalizacija je proces koji se provodi kako bi se smanjile suvišnosti koje su prisutne u podacima u relacijskim bazama podataka. Ovaj proces će uglavnom podijeliti velike tabele na manje tablice sa manje redundansi (zvane “normalne forme”). Ove manje tablice će biti povezane jedna s drugom kroz dobro definirane relacije. U dobro normaliziranoj bazi podataka, svaka izmjena ili modifikacija podataka će zahtijevati izmjenu samo jedne tabele. Prvi normalni oblik (1NF), drugi normalni oblik (2NF) i treći normalni oblik (3NF) uveo je Edgar F. Codd. Boyce-Codd normalni oblik (BCNF) su 1974. predstavili Codd i Raymond F. Boyce. Definirani su viši normalni oblici (4NF, 5NF i 6NF), ali se rijetko koriste.
Tabela koja je usklađena sa 1NF osigurava da ona zapravo predstavlja relaciju (tj. ne sadrži zapise koji se ponavljaju) i ne sadrži nikakve atribute koji imaju relaciju (tj.e. svi atributi trebaju imati atomske vrijednosti). Da bi tabela bila u skladu sa 2NF, ona bi trebala biti usklađena sa 1NF i svaki atribut koji nije dio nijednog ključa kandidata (tj. atributi koji nisu primarni) trebao bi u potpunosti ovisiti o bilo kojem od ključeva kandidata u tabeli. Prema Codd-ovoj definiciji, za tablicu se kaže da je u 3NF, ako i samo ako je ta tablica u drugom normalnom obliku (2NF) i svaki atribut u tablici koji ne pripada ključu kandidata treba direktno ovisiti o svakom ključ kandidata te tabele. BCNF (također poznat kao 3.5NF) bilježi neke anomalije koje ne rješava 3NF.
Šta je denormalizacija?
Denormalizacija je proces obrnut od procesa normalizacije. Denormalizacija radi dodavanjem suvišnih podataka ili grupiranjem podataka radi optimizacije performansi. Iako dodavanje redundantnih podataka zvuči kontraproduktivno, ponekad je denormalizacija vrlo važan proces za prevazilaženje nekih nedostataka u softveru relacijske baze podataka koji mogu uzrokovati teške kazne za performanse normaliziranih baza podataka (čak i podešenih za veće performanse). To je zato što spajanje nekoliko relacija (koje su rezultati normalizacije) da bi se proizveo rezultat upitu ponekad može biti sporo u zavisnosti od stvarne fizičke implementacije sistema baze podataka.
Koja je razlika između normalizacije i denormalizacije?
– Normalizacija i denormalizacija su dva potpuno suprotna procesa.
– Normalizacija je proces podjele većih tabela na manje čime se smanjuju suvišni podaci, dok je denormalizacija proces dodavanja suvišnih podataka radi optimizacije performansi.
– Normalizacija se vrši kako bi se spriječile anomalije baze podataka.
– Denormalizacija se obično provodi radi poboljšanja performansi čitanja baze podataka, ali zbog dodatnih ograničenja koja se koriste za denormalizaciju, upisi (tj. operacije umetanja, ažuriranja i brisanja) mogu postati sporije. Stoga, denormalizirana baza podataka može ponuditi lošije performanse pisanja od normalizirane baze podataka.
– Često se preporučuje da “normalizujete dok ne zaboli, denormalizujte dok ne proradi”.