Ako ste se već bavili bazama podataka, onda ste sigurno čuli za pojam "normalizacija". Možda vas je neko i pitao za vašu bazu da li je normalizovana. Normalizacija se često, ali bez ikakve osnove, svrstava u naprednije tehnike projektovanja baza podataka. Međutim, poznavanje principa normalizacije i njihova primena u dizajnu baza podataka, zapravo nije toliko komplikovana a primenom mogu se postići dramatično bolje performanse. U narednim redovima upoznaćemo vas sa konceptom normalizacije i provesti vas kroz najčešće normalne forme.
Pa, šta zapravo predstavlja normalizacija? U osnovi, to je proces kojim podatke u bazi organizujemo na najefikasniji mogući način. Postoje dva osnovna cilja normalizacije:
- Eliminisanje redundantnosti podataka, što znači uklanjanje pojave čuvanja istog podatka u više od jedne tabele.
- Osiguravanje međuzavisnosti podataka, što znači da u bazi čuvamo samo bitne podatke koji su međusobno povezani.
Oba ova bitna cilja smanjuju potreban prostor za čuvanje baze podataka i obezbeđuju logičnu povezanost podataka.
Stručnjaci za baze podataka razvili su seriju nivoa za obezbeđivanje normalizovanih baza podataka. Ove linije vodilje (nivoi) poznate su kao "normalne forme" i označene su brojkama od jedan (najniža forma normalizacije, poznata kao "prva normalan forma" ili 1NF) do pet (peta normalna forma ili 5NF). U praksi, najčešće se srećemo sa bazama podataka koje se nalaze u 1NF, 2NF i 3NF, a ređe i sa bazama u četvrtoj normalnoj formi (4NF). Peta normalna forma se vrlo retko sreće, a ona je i najdiskutabilnija.
Pre nego što krenemo sa upoznavanjem samih normalnih formi, treba da kažemo da su ove forme samo vodilje za optimizaciju, i samo vodilje (što znači da ih ne treba u svakoj situaciji striktno primenjivati). Ponekad je neophodno da "zaobiđemo" normalizaciju radi zadovoljenja nekih poslovnih zahteva. A sada ćemo proći kroz najčešće normalne forme.
Prvom normalnom formom (1NF) postavljamo osnovna pravila za organizaciju baze podataka:
- Eliminacija dupliranih kolona (atributa) unutar jedne iste tabele.
- Kreiranje odvojenih tabela za svaku grupu bitnih podataka (entitet, poveznik) i obezbeđivanje jedinstvene identifikacije svakog reda (n-torke) u koloni (primarni ključ).
Drugom normalnom formom (2NF) produbljujemo dalje koncept uklanjanja dupliranih podataka:
- Izdvajanje podskupa podataka koji se ponavljaju u više redova tabele u posebnu tabelu.
- Kreiranje veza (relacija) između ovih novih tabela i njihovih predcesora putem stranog ključa (foreign key).
Trećom normalnom formom (3NF) pravimo jedan veliki iskorak napred:
- Uklanjamo kolone (atribute) koji nisu u direktnoj vezi sa primarnim ključem.
Krajnji cilj normalizacije je najverovatnije treća normalan forma. U većini slučajeva ona predstavlja najbolji kompromis između ekstrema koji se odnose na funkcionalnost i lakoću implementacije. Nivoi iznad 3NF, u praksi, mogu da iskomplikuju dizajn baze podataka do tačke da smetaju funkcionalnosti. I još nešto, svi nivoi normalizacije su kumulativni, što znači da baza podataka koja se nalazi u 2NF, takođe mora da ispunjava i sve uslove zadate prvom normalnom formom.