Normalizacija nasuprot denormalizaciji
Relacijske baze podataka sastoje se od relacija (povezanih tablica). Tablice se sastoje od stupaca. Ako su tablice dvije velike (tj. previše stupaca u jednoj tablici), može doći do anomalija baze podataka. Ako su tablice dvije male (tj. baza podataka se sastoji od mnogo manjih tablica), to bi bilo neučinkovito za postavljanje upita. Normalizacija i denormalizacija dva su procesa koji se koriste za optimizaciju performansi baze podataka. Normalizacija smanjuje redundancije koje su prisutne u podatkovnim tablicama. Denormalizacija (obrnuto od normalizacije) dodaje suvišne podatke ili grupne podatke.
Što je normalizacija?
Normalizacija je proces koji se provodi kako bi se redundancije koje su prisutne u podacima u relacijskim bazama podataka svele na minimum. Ovaj proces će uglavnom podijeliti velike tablice u manje tablice s manje suvišnosti (nazvane "Normalni oblici"). Ove manje tablice bit će povezane jedna s drugom kroz dobro definirane odnose. U dobro normaliziranoj bazi podataka, svaka izmjena ili modifikacija podataka zahtijevat će modificiranje samo jedne tablice. Prvu normalnu formu (1NF), drugu normalnu formu (2NF) i treću normalnu formu (3NF) predstavio je Edgar F. Codd. Boyce-Coddov normalni oblik (BCNF) uveli su 1974. Codd i Raymond F. Boyce. Viši normalni oblici (4NF, 5NF i 6NF) su definirani, ali se rijetko koriste.
Tablica koja je u skladu s 1NF jamči da zapravo predstavlja relaciju (tj. ne sadrži nijedan zapis koji se ponavlja) i ne sadrži nikakve atribute koji imaju relacijske vrijednosti (tj.e. svi atributi trebaju imati atomske vrijednosti). Da bi tablica bila u skladu s 2NF, trebala bi biti usklađena s 1NF i bilo koji 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 tablici. 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 trebao bi izravno ovisiti o svakom ključ kandidata te tablice. BCNF (također poznat kao 3.5NF) hvata neke anomalije koje ne rješava 3NF.
Što je denormalizacija?
Denormalizacija je obrnuti proces od procesa normalizacije. Denormalizacija funkcionira dodavanjem suvišnih podataka ili grupiranjem podataka radi optimizacije izvedbe. Iako dodavanje suvišnih podataka zvuči kontraproduktivno, ponekad je denormalizacija vrlo važan proces za prevladavanje nekih nedostataka u softveru relacijske baze podataka koji mogu uzrokovati velike kazne u radu s normaliziranim bazama podataka (čak i podešenim za bolje performanse). To je zato što spajanje nekoliko relacija (koje su rezultati normalizacije) da bi se proizveo rezultat za upit ponekad može biti sporo, ovisno o stvarnoj fizičkoj implementaciji sustava baza podataka.
Koja je razlika između normalizacije i denormalizacije?
– Normalizacija i denormalizacija dva su potpuno suprotna procesa.
– Normalizacija je proces dijeljenja većih tablica na manje čime se smanjuju suvišni podaci, dok je denormalizacija proces dodavanja suvišnih podataka radi optimizacije performansi.
– Normalizacija se provodi kako bi se spriječile anomalije baza podataka.
– Denormalizacija se obično provodi kako bi se poboljšala izvedba čitanja baze podataka, ali zbog dodatnih ograničenja koja se koriste za denormalizaciju, pisanje (tj. operacije umetanja, ažuriranja i brisanja) može postati sporije. Stoga denormalizirana baza podataka može ponuditi lošije performanse pisanja od normalizirane baze podataka.
– Često se preporučuje "normalizirati dok ne zaboli, denormalizirati dok ne djeluje".