- Normalni oblici
- Prvi normalan oblik (1FN)
- Drugi normalan oblik (2FN)
- Treći normalan oblik (3FN)
- Primjeri trećeg normalnog oblika
- Primjer 1
- Napravite novu tablicu
- Primjer 2
- Reference
Treća normalna forma (baze podataka) je relacijska baza podataka dizajn tehnika, gdje se različite tablice koje čine ga ne samo u skladu sa drugom normalnom obliku, ali svi njezini atributi ili polja ovisi direktno o primarnom ključu.
Pri dizajniranju baze podataka glavni je cilj stvoriti točan prikaz podataka, odnose među njima i ograničenja na relevantne podatke.

Izvor: pixabay.com
Da bi se postigao ovaj cilj, mogu se koristiti neke tehnike dizajniranja baza podataka, među kojima je i normalizacija.
Ovo je postupak organiziranja podataka u bazu podataka kako bi se izbjegli viškovi i moguće anomalije umetanja, ažuriranja ili uklanjanja podataka, što stvara jednostavno i stabilno oblikovanje konceptualnog modela.
Započinje ispitivanjem funkcionalnog odnosa ili ovisnosti između atributa. Oni opisuju neko svojstvo podataka ili odnos među njima.
Normalni oblici
Normalizacija koristi niz testova, nazvanih normalni oblici, kako bi se utvrdilo optimalno grupiranje tih atributa i na kraju uspostavio odgovarajući skup odnosa koji podržavaju zahtjeve za podacima tvrtke.
Odnosno, tehnika normalizacije izgrađena je oko koncepta normalnog oblika, koji definira sustav ograničenja. Ako odnos zadovoljava ograničenja određenog normalnog oblika, kaže se da je odnos u tom normalnom obliku.
Prvi normalan oblik (1FN)
Kaže se da je tablica u 1FN ako svi atributi ili polja unutar nje sadrže samo jedinstvene vrijednosti. Odnosno, svaka vrijednost za svaki atribut mora biti nedjeljiva.
Po definiciji, relacijska baza podataka uvijek će se normalizirati u prvi normalan oblik, jer su vrijednosti atributa uvijek atomske. Svi odnosi u bazi podataka nalaze se u 1FN.
Međutim, jednostavno napuštanje baze podataka poput ove potiče niz problema, kao što su suvišnost i mogući kvarovi nadogradnje. Za ispravljanje ovih problema razvijeni su viši normalni oblici.
Drugi normalan oblik (2FN)
Bavi se uklanjanjem kružnih ovisnosti sa stola. Kaže se da je odnos u 2FN ako je u 1FN te da svako ne-ključno polje ili atribut u potpunosti ovisi o primarnom ključu, ili točnije, osigurava da tablica ima jedinstvenu svrhu.
Atribut koji nije ključan je svaki atribut koji nije dio primarnog ključa za odnos.
Treći normalan oblik (3FN)
Bavi se uklanjanjem tranzitivnih ovisnosti iz tablice. Odnosno, uklonite atribute koji nisu ključni i ne ovise o primarnom ključu, već o drugom atributu.
Tranzitivna ovisnost je vrsta funkcionalne ovisnosti u kojoj se vrijednost nekog ključnog polja ili atributa određuje vrijednošću drugog polja koja također nije ključna.
Trebate potražiti ponavljajuće vrijednosti u atributima koji nisu ključni kako biste osigurali da ti ključni atributi ne ovise o ničemu osim o primarnom ključu.
Kaže se da su atributi međusobno neovisni ako nijedan od njih funkcionalno ne ovisi o kombinaciji drugih. Ova međusobna neovisnost osigurava da se atributi mogu ažurirati pojedinačno, bez opasnosti od utjecaja na drugi atribut.
Stoga, da bi odnos u bazi podataka bio u trećem normalnom obliku, on mora biti u skladu s:
- Svi zahtjevi 2FN.
- Ako postoje atributi koji nisu povezani s primarnim ključem, moraju ih biti uklonjeni i smješteni u posebnu tablicu, koja se obje tablice odnosi putem stranog ključa. Odnosno, ne bi trebalo postojati nikakva tranzitivna ovisnost.
Primjeri trećeg normalnog oblika
Primjer 1
Neka tablica bude STUDENT, čiji je glavni ključ identifikacija učenika (STUDENT_ID), a sastoji se od sljedećih atributa: STUDENT_NAME, STREET, CITY i POST_CODE, koji ispunjavaju uvjete da budu 2FN.

U ovom slučaju STREET i CITY nemaju izravan odnos s primarnim ključem STUDENT_ID, jer nisu izravno povezani sa studentom, ali u potpunosti ovise o poštanskom broju.
Kako se student nalazi na mjestu koje određuje CODE_POSTAL, STREET i CITY su povezani s ovim atributom. Zbog ovog drugog stupnja ovisnosti, nije potrebno pohraniti ove atribute u tablicu STUDENT.
Napravite novu tablicu
Pretpostavimo da postoji više učenika smještenih u istom poštanskom broju, pri čemu STUDENT tablica ima ogromnu količinu zapisa, a potrebno je promijeniti naziv ulice ili grada, tada se ova ulica ili grad mora pronaći i ažurirati u cijeloj tablici STUDENT.
Na primjer, ako trebate promijeniti ulicu "El Limón" u "El Limón II", morat ćete potražiti "El Limón" u cijeloj tablici STUDENTA, a zatim je ažurirati na "El Limón II".
Pretraživanje u ogromnoj tablici i ažuriranje pojedinačnih ili više zapisa dugo će trajati i stoga utjecati na performanse baze podataka.
Umjesto toga, ti se detalji mogu čuvati u zasebnoj tablici (POSTCARD) koja se odnosi na tablicu STUDENT koristeći atribut POST_CODE.
Tablica POST će imati razmjerno manje zapisa i ovu POST tablicu trebat će ažurirati samo jednom. To će se automatski odraziti u tablici STUDENT, pojednostaviti bazu podataka i upite. Dakle, tablice će biti u 3FN:

Primjer 2
Neka se sljedeća tablica koristi s poljem Project_Num kao primarnim ključem i s ponovljenim vrijednostima u atributima koji nisu ključevi.

Vrijednost telefona ponavlja se svaki put kada se ponavlja ime voditelja. To je zato što telefonski broj ovisi samo o stupnju drugog stupnja od broja projekta. Stvarno prvo ovisi o menadžeru, a to zauzvrat ovisi o broju projekta, što čini tranzitivnu ovisnost.
Atribut Project_Manager ne može biti mogući ključ u tablici Projekti jer isti upravitelj upravlja s više projekata. Rješenje za to je uklanjanje atributa s ponovljenim podacima (Telefon), stvaranje zasebne tablice.
Odgovarajući atributi moraju se grupirati zajedno, stvarajući novu tablicu za njihovo spremanje. Podaci se unose i provjerava se da ponovljene vrijednosti nisu dio primarnog ključa. Primarni ključ postavlja se za svaku tablicu i po potrebi se dodaju strani ključevi.
Kako bi se udovoljio trećem uobičajenom obliku, kreirana je nova tablica (Upravitelji) koja će riješiti problem. Obje su tablice povezane kroz polje Project_Manager:

Reference
- Teradata (2019). Prvi, drugi i treći normalan oblik. Preuzeto sa: docs.teradata.com.
- Tutorial Cup (2019). Treći normalan oblik (3NF). Preuzeto sa: tutorialcup.com.
- Baza podataka Dev (2015). Treći normalan obrazac (3NF) - normaliziranje baze podataka. Preuzeto iz: databasedev.co.uk.
- Relacijski DB Dizajn (2019). Uvod u treći normalan oblik. Preuzeto sa: relationaldbdesign.com.
- Lutke (2019.). Prvi, drugi i treći normalni oblik SQL-a. Preuzeto sa: dummies.com.
