DBMS normalizacija: 1NF, 2NF, 3NF primjer baze podataka
Normalizacija ukratko
Normalizacija je proces strukturiranja baze podataka kako bi se smanjila redundancija i poboljลกala konzistentnost. Jednostavno reฤeno, ona razbija velike, neuredne tablice u manje, dobro organizirane. To osigurava logiฤko pohranjivanje podataka, ฤineฤi baze podataka uฤinkovitima, jednostavnima za odrลพavanje i bez dupliciranja ili pogreลกaka.
ล to je normalizacija baze podataka?
Normalizacija baze podataka je tehnika dizajna baze podataka koja smanjuje redundantnost podataka i eliminira nepoลพeljne karakteristike poput anomalija umetanja, aลพuriranja i brisanja. Pravila normalizacije dijele veฤe tablice u manje tablice i povezuju ih pomoฤu odnosa. Svrha normalizacije u SQL-u je eliminirati suviลกne (ponavljajuฤe) podatke i osigurati da su podaci pohranjeni logiฤno.
Izumitelj je relacijski model Edgar Codd je predloลพio teoriju normalizacije podataka uvoฤenjem prve normalne forme, a nastavio je proลกirivati โโteoriju drugom i treฤom normalnom formom. Later pridruลพio se Raymondu F. Boyceu kako bi razvio teoriju Boyce-Coddovog normalnog oblika.
Zaลกto nam je potrebna normalizacija?
Bez normalizacije, baze podataka brzo postaju nekonzistentne i redundantne. Problemi poput anomalije umetanja (nepotpuni zapisi se ne mogu dodati), aลพuriranje anomalija (promjene na jednom mjestu ne odraลพavaju se svugdje) i anomalije brisanja (sluฤajno uklanjanje podataka briลกe vrijedne informacije) ฤesto se javljaju. Normalizacija uklanja te probleme, osigurava integritet podataka, smanjuje dupliciranje i pojednostavljuje upravljanje bazom podataka.
Koje su vrste normalnih formi u DBMS-u?
Ovdje je popis normalnih obrazaca u SQL-u:
- 1NF (Prvi normalni oblik): Osigurava da je tablica baze podataka organizirana tako da svaki stupac sadrลพi atomske (nedjeljive) vrijednosti, a svaki je zapis jedinstven. Ovo eliminira grupe koje se ponavljaju, ฤime se podaci strukturiraju u tablice i stupce.
- 2NF (drugi normalni oblik): Nadovezuje se na 1NF prema Moramo ukloniti suviลกne podatke iz tablice koji se primjenjuju na viลกe redaka. i stavljajuฤi ih u zasebne tablice. Zahtijeva da svi ne-kljuฤni atributi budu potpuno funkcionalni na primarnom kljuฤu.
- 3NF (Treฤi normalni oblik): Proลกiruje 2NF osiguravajuฤi da su svi ne-kljuฤni atributi ne samo potpuno funkcionalni na primarnom kljuฤu, veฤ i neovisni jedni o drugima. Ovo eliminira tranzitivnu ovisnost.
- BCNF (Boyce-Coddov normalni oblik): Poboljลกanje 3NF-a koje rjeลกava anomalije koje 3NF ne rjeลกava. Zahtijeva da svaka determinanta bude kljuฤ kandidata, ฤime se osigurava joลก stroลพe pridrลพavanje pravila normalizacije.
- 4NF (ฤetvrti normalni oblik): Rjeลกava ovisnosti s viลกe vrijednosti. Osigurava da u zapisu nema viลกe neovisnih viลกevrijednih ฤinjenica o entitetu.
- 5NF (peti normalni oblik): Takoฤer poznat kao "Projection-Join Normal Form" (PJNF), odnosi se na rekonstrukciju informacija iz manjih, razliฤito rasporeฤenih dijelova podataka.
- 6NF (ลกesti normalni oblik): Teoretski i nije ลกiroko primijenjen. Bavi se vremenskim podacima (rukovanje promjenama tijekom vremena) daljnjom dekompozicijom tablica kako bi se uklonila sva nevremenska redundantnost.
Teorija normalizacije podataka u MySQL posluลพitelj se i dalje razvija. Na primjer, rasprave se vode ฤak i na 6th Normalna forma. Meฤutim, u veฤini praktiฤnih primjena normalizacija najbolje postiลพe u 3rd Normalna forma. Evolucija normalizacije u SQL teorijama ilustrirana je u nastavku-
.png)
Normalizacija baze podataka s primjerima
Baza podataka Primjer normalizacije moลพe se lako razumjeti uz pomoฤ studije sluฤaja. Pretpostavimo da videoteka odrลพava bazu podataka iznajmljenih filmova. Bez ikakve normalizacije u bazi podataka, sve informacije su pohranjene u jednoj tablici kao ลกto je prikazano u nastavku. Razumimo bazu podataka normalizacije s primjerom normalizacije s rjeลกenjem:
Evo vidite Stupac Iznajmljeni filmovi ima viลกe vrijednosti. Sada prijeฤimo na 1. normalne forme:
Prvi uobiฤajeni obrazac (1NF)
- Svaka ฤelija tablice treba sadrลพavati jednu vrijednost.
- Svaki zapis mora biti jedinstven.
Gornja tablica u 1NF-
1NF primjer

Prije nego ลกto nastavimo, shvatimo nekoliko stvari โ
ล to je KEY u SQL-u
A KEY u SQL-u je vrijednost koja se koristi za jedinstvenu identifikaciju zapisa u tablici. SQL KEY je jedan stupac ili kombinacija viลกe stupaca koji se koriste za jedinstvenu identifikaciju redaka ili torki u tablici. SQL kljuฤ se koristi za identifikaciju dupliciranih informacija, a takoฤer pomaลพe uspostaviti odnos izmeฤu viลกe tablica u bazi podataka.
Napomena: Stupci u tablici koji se NE koriste za jedinstvenu identifikaciju zapisa nazivaju se nekljuฤni stupci.
ล to je primarni kljuฤ?

Primarna je vrijednost jednog stupca koja se koristi za jedinstvenu identifikaciju zapisa baze podataka.
Ima sljedeฤe atribute
- A Osnovni kljuฤ ne moลพe biti NULL
- Vrijednost primarnog kljuฤa mora biti jedinstvena
- Vrijednosti primarnog kljuฤa rijetko bi se trebale mijenjati
- Primarni kljuฤ mora dobiti vrijednost kada se umetne novi zapis.
ล to je kompozitni kljuฤ?
Sloลพeni kljuฤ je primarni kljuฤ sastavljen od viลกe stupaca koji se koriste za jedinstvenu identifikaciju zapisa
U naลกoj bazi podataka imamo dvije osobe s istim imenom Robert Phil, ali ลพive na razliฤitim mjestima.

Stoga zahtijevamo i puno ime i adresu kako bismo jedinstveno identificirali zapis. To je kompozitni kljuฤ.
Prijeฤimo na drugu normalnu formu 2NF
Drugi normalni obrazac (2NF)
- Pravilo 1- Budite u 1NF
- Pravilo 2- Primarni kljuฤ jednog stupca koji funkcionalno ne ovisi ni o jednom podskupu relacije kljuฤa kandidata
Jasno je da ne moลพemo krenuti naprijed kako bismo napravili naลกu jednostavnu bazu podataka u 2nd Normalizacijski obrazac osim ako ne podijelimo gornju tablicu.
Naลกu tablicu 1NF podijelili smo u dvije tablice, tj. Tablica 1 i Tablica 2. Tablica 1 sadrลพi podatke o ฤlanovima. Tablica 2 sadrลพi podatke o posuฤenim filmovima.
Uveli smo novi stupac pod nazivom Membership_id koji je primarni kljuฤ za tablicu 1. Zapisi se mogu jedinstveno identificirati u tablici 1 pomoฤu ID-a ฤlanstva
Baza podataka โ strani kljuฤ
U tablici 2, Membership_ID je vanjski kljuฤ

Strani kljuฤ upuฤuje na primarni kljuฤ druge tablice! Pomaลพe u povezivanju vaลกih tablica
- Strani kljuฤ moลพe imati razliฤit naziv od primarnog kljuฤa
- Osigurava da redovi u jednoj tablici imaju odgovarajuฤe retke u drugoj
- Za razliku od primarnog kljuฤa, oni ne moraju biti jedinstveni. Najฤeลกฤe nisu
- Strani kljuฤevi mogu biti null iako primarni kljuฤevi ne mogu
Zaลกto vam treba strani kljuฤ?
Pretpostavimo da poฤetnik unese zapis u tablicu B kao ลกto je
U svoj vanjski kljuฤ moฤi ฤete umetnuti samo vrijednosti koje postoje u jedinstvenom kljuฤu u nadreฤenoj tablici. To pomaลพe u referencijalnom integritetu.
Gore navedeni problem moลพe se prevladati deklariranjem ID-a ฤlanstva iz Tablice2 kao stranog kljuฤa ID-a ฤlanstva iz Tablice1
Sada, ako netko pokuลกa umetnuti vrijednost u polje ID ฤlanstva koja ne postoji u nadreฤenoj tablici, prikazat ฤe se pogreลกka!
ล to su tranzitivne funkcionalne ovisnosti?
Prijelazna funkcionalna ovisnost je kada mijenja ne-kljuฤni stupac, moลพe uzrokovati promjenu bilo kojeg drugog ne-kljuฤnog stupca
Razmotrite tablicu 1. Promjena punog imena u stupcu koji nije kljuฤ moลพe promijeniti pozdrav.
Idemo u 3NF
Treฤi uobiฤajeni obrazac (3NF)
- Pravilo 1- Budite u 2NF
- Pravilo 2- Nema tranzitivnih funkcionalnih ovisnosti
Da bismo naลกu tablicu 2NF premjestili u 3NF, ponovno moramo podijeliti naลกu tablicu.
3NF primjer
Ispod je primjer 3NF u SQL bazi podataka:
Ponovo smo podijelili naลกe stolove i napravili novu tablicu koja pohranjuje pozdrave.
Nema tranzitivnih funkcionalnih ovisnosti, pa je stoga naลกa tablica u 3NF
U tablici 3 ID pozdrava je primarni kljuฤ, au tablici 1 ID pozdrava je stran primarnom kljuฤu u tablici 3
Sada je naลก mali primjer na razini koja se ne moลพe dalje dekomponirati da bi se postigla viลกa normalna forma tipova normalizacije u DBMS-u. Zapravo, veฤ je u viลกim oblicima normalizacije. U sloลพenim bazama podataka obiฤno su potrebni zasebni napori za prelazak na sljedeฤe razine normaliziranja podataka. Meฤutim, u nastavku ฤemo ukratko raspravljati o sljedeฤim razinama normalizacije u DBMS-u.
Boyce-Coddov normalni oblik (BCNF)
ฤak i kada je baza podataka u 3rd Normalan oblik, ipak ฤe biti anomalija ako ima viลกe od jednog Kandidat Kljuฤ.
Ponekad se BCNF takoฤer naziva 3.5 Normalni oblik.
ฤetvrti normalni oblik (4NF)
Ako nijedna instanca tablice baze podataka ne sadrลพi dva ili viลกe neovisnih i viลกevrijednih podataka koji opisuju relevantni entitet, tada je u 4th Normalna forma.
Peti normalni oblik (5NF)
Stol je u 5th Normalni oblik samo ako je u 4NF i ne moลพe se rastaviti na bilo koji broj manjih tablica bez gubitka podataka.
Predloลพeni ลกesti normalni oblik (6NF).
6th Normal Form nije standardiziran, ali struฤnjaci za baze podataka raspravljaju o njemu veฤ neko vrijeme. Nadamo se da ฤemo imati jasnu i standardiziranu definiciju za 6th Normalna forma u bliskoj buduฤnostiโฆ
Koje su prednosti normalizacije?
- Poboljลกajte dosljednost podataka: Normalizacija osigurava da je svaki podatak pohranjen na samo jednom mjestu, ฤime se smanjuju ลกanse nedosljednih podataka. Kada se podaci aลพuriraju, potrebno ih je aลพurirati samo na jednom mjestu, ฤime se osigurava dosljednost.
- Smanjite redundantnost podataka: Normalizacija pomaลพe eliminirati duple podatke tako ลกto ih dijeli u viลกe povezanih tablica. To moลพe uลกtedjeti prostor za pohranu i uฤiniti bazu podataka uฤinkovitijom.
- Poboljลกajte izvedbu upita: Normalizirane baze podataka ฤesto je lakลกe postavljati upite. Buduฤi da su podaci organizirani logiฤno, upiti se mogu optimizirati za brลพe izvoฤenje.
- Uฤinite podatke smislenijim: Normalizacija ukljuฤuje grupuping podatke na naฤin koji ima smisla i intuitivan je. To moลพe olakลกati razumijevanje i koriลกtenje baze podataka, posebno za ljude koji nisu dizajnirali bazu podataka.
- Smanjite ลกanse za anomalije: Anomalije su problemi koji se mogu pojaviti prilikom dodavanja, aลพuriranja ili brisanja podataka. Normalizacija moลพe smanjiti ลกanse za ove anomalije osiguravajuฤi da su podaci logiฤno organizirani.
Koji su nedostaci normalizacije?
- Poveฤana sloลพenost: Normalizacija moลพe dovesti do sloลพenih odnosa. Velikim brojem tablica sa stranim kljuฤevima moลพe biti teลกko upravljati, ลกto dovodi do zabune.
- Smanjena fleksibilnost: Zbog strogih pravila normalizacije, moลพe biti manje fleksibilnosti u pohranjivanju podataka koji se ne pridrลพavaju tih pravila.
- Poveฤani zahtjevi za pohranu: Iako normalizacija smanjuje redundanciju, moลพda ฤe biti potrebno dodijeliti viลกe prostora za pohranu za smjeลกtaj dodatnih tablica i indeksa.
- Dodatni troลกkovi izvedbe: Spajanje viลกe tablica moลพe biti skupo u smislu izvedbe. ล to su podaci normaliziraniji, potrebno je viลกe spajanja, ลกto moลพe usporiti vrijeme dohvaฤanja podataka.
- Kontekst gubitka podataka: Normalizacija rastavlja podatke u zasebne tablice, ลกto moลพe dovesti do gubitka poslovnog konteksta. Ispitivanje povezanih tablica neophodno je za razumijevanje konteksta podataka.
- Potreba za struฤnim znanjem: Implementacija normalizirane baze podataka zahtijeva duboko razumijevanje podataka, odnosa izmeฤu podataka i pravila normalizacije. To zahtijeva struฤno znanje i moลพe oduzimati puno vremena.
To je sve za SQL normalizaciju!!!
Pitanja i odgovori
Rezime
- Projektiranje baze podataka kljuฤan je za uspjeลกnu implementaciju sustava za upravljanje bazom podataka koji zadovoljava zahtjeve podataka poslovnog sustava.
- Normalizacija u DBMS-u je proces koji pomaลพe u proizvodnji sustava baza podataka koji su isplativi i imaju bolje sigurnosne modele.
- Funkcionalne ovisnosti vrlo su vaลพna komponenta procesa normalizacije podataka
- Veฤina sustava baza podataka su normalizirane baze podataka do treฤe normalne forme u DBMS-u.
- Primarni kljuฤ jedinstveno identificira zapis u tablici i ne moลพe biti null
- Strani kljuฤ pomaลพe u povezivanju tablice i referenci na primarni kljuฤ











