DBMS normalizacija: 1NF, 2NF, 3NF primjer baze podataka

Normalizacija DBMS-a

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-

Normalni obrasci baze podataka
Normalni obrasci baze podataka

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:

Normalizacija baze podataka s primjerom

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

1NF pravila
Primjer 1NF u DBMS-u

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ฤ?

Glavni kljuฤ
Primarni kljuฤ u DBMS-u

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.

Sloลพeni kljuฤ u bazi podataka
Sloลพeni kljuฤ u bazi podataka

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.

2NF pravila

2NF pravila

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ฤ

Baza podataka โ€“ strani kljuฤ

Baza podataka โ€“ strani kljuฤ
Strani kljuฤ u DBMS-u

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

Baza podataka โ€“ strani kljuฤ

Zaลกto vam treba strani kljuฤ?

Pretpostavimo da poฤetnik unese zapis u tablicu B kao ลกto je

Zaลกto vam je potreban strani kljuฤ

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.

Prijelazne funkcionalne ovisnosti

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:

3NF primjer

3NF primjer

3NF primjer

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

Normalizacija u DBMS-u je proces organiziranja podataka u bazi podataka kako bi se smanjila redundancija i poboljลกao integritet podataka. Ukljuฤuje razdvajanje velikih tablica u manje, povezane i definiranje odnosa meฤ‘u njima. To osigurava logiฤko i dosljedno pohranjivanje podataka, ฤineฤ‡i aลพuriranja, umetanja i brisanja uฤinkovitijima, a istovremeno sprjeฤavajuฤ‡i anomalije.

Normalizacija podataka strukturira tablice baze podataka kako bi se izbjeglo ponavljanje. Na primjer, umjesto pohranjivanja adrese kupca u svaki zapis narudลพbe, normalizacija smjeลกta podatke o kupcu u zasebnu tablicu โ€žKupacโ€œ povezanu kljuฤem. To smanjuje redundanciju - pa ako se adresa promijeni, aลพurira se samo jednom. Rezultat je ฤiลกฤ‡a, uฤinkovitija baza podataka s toฤnim i dosljednim podacima.

Svrha normalizacije je uklanjanje redundantnih podataka, minimiziranje anomalija i osiguranje uฤinkovitosti baze podataka. Pojednostavljuje odrลพavanje od strane keeping organizira povezane informacije, smanjuje gubitak prostora za pohranu i osigurava konzistentnost podataka. Normalizacija takoฤ‘er poboljลกava performanse upita logiฤkim strukturiranjem podataka, omoguฤ‡ujuฤ‡i programerima i korisnicima pristup toฤnim informacijama bez suoฤavanja s dupliciranjem ili konfliktnim unosima.

Treฤ‡i normalni oblik (3NF) je faza normalizacije koja osigurava da svaki atribut koji nije kljuฤ ovisi samo o primarnom kljuฤu, a ne o drugim atributima koji nisu kljuฤni. Na primjer, u tablici zaposlenika, "Naziv odjela" treba biti odvojen u tablicu odjela umjesto oslanjanja na "ID odjela". Time se izbjegavaju tranzitivne ovisnosti, osiguravajuฤ‡i toฤnost, dosljednost i uฤinkovitost u upravljanju podacima.

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ฤ

Saลพmite ovu objavu uz: