DBMS-normalisointi: 1NF, 2NF, 3NF Tietokantaesimerkki

Tietokannan hallinnan normalisointi

Normalisointi pรคhkinรคnkuoressa

Normalisointi on prosessi, jossa tietokantaa jรคsennetรครคn redundanssin vรคhentรคmiseksi ja johdonmukaisuuden parantamiseksi. Yksinkertaisesti sanottuna se jakaa suuret, sekavat taulukot pienemmiksi, hyvin jรคrjestetyiksi taulukoiksi. Tรคmรค varmistaa, ettรค tiedot tallennetaan loogisesti, mikรค tekee tietokannoista tehokkaita, helppoja yllรคpitรครค ja estรครค pรครคllekkรคisyyksiรค tai virheitรค.

Mikรค on tietokannan normalisointi?

Tietokannan normalisointi on tietokannan suunnittelutekniikka, joka vรคhentรครค tietojen redundanssia ja eliminoi ei-toivotut ominaisuudet, kuten lisรคys-, pรคivitys- ja poistohรคiriรถt. Normalisointisรครคnnรถt jakavat suuremmat taulukot pienempiin taulukoihin ja linkittรคvรคt ne suhteiden avulla. SQL:n normalisoinnin tarkoitus on poistaa tarpeettomat (toistuvat) tiedot ja varmistaa, ettรค tiedot tallennetaan loogisesti.

Keksijรค relaatiomalli Edgar Codd ehdotti teoriaa tietojen normalisoinnista ottamalla kรคyttรถรถn ensimmรคisen normaalimuodon, ja hรคn jatkoi teorian laajentamista toisella ja kolmannella normaalimuodolla. Later hรคn liittyi Raymond F. Boycen kehittรคmรครคn Boyce-Coddin normaalimuodon teoriaa.

Miksi tarvitsemme normalisointia?

Ilman normalisointia tietokannoista tulee nopeasti epรคjohdonmukaisia โ€‹โ€‹ja tarpeettomia. Ongelmia, kuten lisรคyspoikkeavuuksia (puutteellisia tietueita ei voi lisรคtรค), pรคivityspoikkeamat (muutokset yhdessรค paikassa eivรคt heijastu kaikkialle) ja poistopoikkeavuudet (tietojen poistaminen vahingossa pyyhkii pois arvokasta tietoa) esiintyy usein. Normalisointi poistaa nรคmรค ongelmat varmistaen tietojen eheyden, vรคhentรคen pรครคllekkรคisyyksiรค ja yksinkertaistaen tietokannan hallintaa.

Mitรค normaalimuotoja on olemassa tietokannan hallintajรคrjestelmissรค?

Tรคssรค on luettelo SQL:n normaaleista muodoista:

  • 1NF (ensimmรคinen normaalimuoto): Varmistaa, ettรค tietokantataulukko on jรคrjestetty siten, ettรค jokainen sarake sisรคltรครค atomiarvoja (jakamattomia) ja jokainen tietue on ainutlaatuinen. Tรคmรค eliminoi toistuvia ryhmiรค ja jรคsentรครค tiedot taulukoiksi ja sarakkeiksi.
  • 2NF (toinen normaalimuoto): Rakentuu 1NF:n varaan Meidรคn on poistettava ylimรครคrรคiset tiedot taulukosta, jota kรคytetรครคn useille riveille. ja sijoittamalla ne erillisiin taulukoihin. Se edellyttรครค, ettรค kaikki muut kuin avainattribuutit toimivat tรคysin ensisijaisessa avaimessa.
  • 3NF (kolmas normaalimuoto): Laajentaa 2NF:รครค varmistamalla, ettรค kaikki ei-avainattribuutit eivรคt ole vain tรคysin toimivia ensisijaisessa avaimessa, vaan myรถs toisistaan โ€‹โ€‹riippumattomia. Tรคmรค eliminoi transitiivisen riippuvuuden.
  • BCNF (Boyce-Coddin normaalimuoto): 3NF:n parannus, joka korjaa poikkeavuuksia, joita 3NF ei kรคsittele. Se edellyttรครค, ettรค jokainen determinantti on ehdokasavain, mikรค varmistaa normalisointisรครคntรถjen entistรค tiukemman noudattamisen.
  • 4NF (neljรคs normaalimuoto): Kรคsittelee moniarvoisia riippuvuuksia. Se varmistaa, ettรค tietueessa ei ole useita itsenรคisiรค moniarvoisia faktoja entiteetistรค.
  • 5NF (viides normaalimuoto): Tunnetaan myรถs nimellรค "Projection-Join Normal Form" (PJNF), se liittyy tiedon rekonstruoimiseen pienemmistรค, eri tavalla jรคrjestetyistรค datakappaleista.
  • 6NF (kuudes normaalimuoto): Teoreettinen ja ei laajalti toteutettu. Se kรคsittelee ajallisia tietoja (kรคsittelee muutoksia ajan myรถtรค) hajottamalla taulukoita edelleen kaiken ei-ajallisen redundanssin poistamiseksi.

Tietojen normalisoinnin teoria kirjassa MySQL palvelinta kehitetรครคn edelleen. Esimerkiksi 6:sta keskustellaanth Normaali muoto. Useimmissa kรคytรคnnรถn sovelluksissa normalisointi kuitenkin saavuttaa parhaansa 3:ssard Normaali muoto. Normalisoinnin kehitys SQL-teorioissa on kuvattu alla -

Tietokannan normaalit lomakkeet
Tietokannan normaalit lomakkeet

Tietokannan normalisointi esimerkein

tietokanta Normalisointiesimerkki voidaan helposti ymmรคrtรครค tapaustutkimuksen avulla. Oletetaan, ettรค videokirjasto yllรคpitรครค tietokantaa vuokratuista elokuvista. Ilman normalisointia tietokannassa, kaikki tiedot tallennetaan yhteen taulukkoon alla olevan kuvan mukaisesti. Ymmรคrretรครคn normalisointitietokanta normalisointiesimerkillรค ratkaisulla:

Tietokannan normalisointi esimerkillรค

Tรคssรค nรคet Vuokratut elokuvat -sarakkeessa on useita arvoja. Siirrytรครคn nyt ensimmรคisiin normaalimuotoihin:

Ensimmรคinen normaali lomake (1NF)

  • Jokaisen taulukon solun tulee sisรคltรครค yksi arvo.
  • Jokaisen tietueen on oltava ainutlaatuinen.

Yllรค oleva taulukko 1NF-

1NF Esimerkki

1NF sรครคnnรถt
Esimerkki 1NF:stรค DBMS:ssรค

Ennen kuin jatkamme, ymmรคrrรคmme muutamia asioita -

Mikรค on AVAIN SQL:ssรค

A KEY SQL:ssรค on arvo, jota kรคytetรครคn taulukon tietueiden yksilรถimiseen. SQL-AVAIN on yksi sarake tai useiden sarakkeiden yhdistelmรค, jota kรคytetรครคn yksilรถimรครคn rivit tai monikot taulukossa. SQL-avainta kรคytetรครคn pรครคllekkรคisten tietojen tunnistamiseen, ja se auttaa myรถs luomaan yhteyden useiden tietokannan taulukoiden vรคlille.

Huomautus: Taulukon sarakkeita, joita EI kรคytetรค tietueen yksilรถimiseen, kutsutaan ei-avainsarakkeiksi.

Mikรค on ensisijainen avain?

Pรครคavain
Ensisijainen avain DBMS:ssรค

Ensisijainen on yhden sarakkeen arvo, jota kรคytetรครคn tietokantatietueen yksilรถimiseen.

Sillรค on seuraavat ominaisuudet

  • A ensisijainen avain ei voi olla NULL
  • Ensisijaisen avaimen arvon on oltava yksilรถllinen
  • Ensisijaisen avaimen arvoja tulisi harvoin muuttaa
  • Ensisijaiselle avaimelle on annettava arvo, kun uusi tietue lisรคtรครคn.

Mikรค on yhdistelmรคavain?

Yhdistelmรคavain on useista sarakkeista koostuva ensisijainen avain, jota kรคytetรครคn tietueen yksilรถimiseen

Tietokannassamme on kaksi henkilรถรค, joilla on sama nimi Robert Phil, mutta he asuvat eri paikoissa.

Yhdistelmรคavain tietokannassa
Yhdistelmรคavain tietokannassa

Siksi vaadimme sekรค koko nimen ettรค osoitteen tietueen yksilรถimiseksi. Se on yhdistelmรคavain.

Siirrytรครคn toiseen normaalimuotoon 2NF

Toinen normaali muoto (2NF)

  • Sรครคntรถ 1 - Ole 1NF:ssรค
  • Sรครคntรถ 2 โ€“ Yhden sarakkeen ensisijainen avain, joka ei ole toiminnallisesti riippuvainen mistรครคn ehdokasavainsuhteen osajoukosta

On selvรครค, ettรค emme voi edetรค yksinkertaisen tietokannan tekemisessรค 2:ssand Normalisointimuoto, ellemme osioi yllรค olevaa taulukkoa.

2NF sรครคnnรถt

2NF sรครคnnรถt

Olemme jakaneet 1NF-pรถytรคmme kahteen pรถytรครคn eli. Taulukko 1 ja Taulukko 2. Taulukko 1 sisรคltรครค jรคsentiedot. Taulukko 2 sisรคltรครค tietoja vuokratuista elokuvista.

Olemme ottaneet kรคyttรถรถn uuden sarakkeen nimeltรค Membership_id, joka on taulukon 1 ensisijainen avain. Tietueet voidaan yksilรถidรค taulukossa 1 kรคyttรคmรคllรค jรคsentunnusta

Tietokanta โ€“ vieras avain

Taulukossa 2 Membership_ID on vieras avain

Tietokanta โ€“ vieras avain

Tietokanta โ€“ vieras avain
Vieras avain DBMS:ssรค

Vieras avain viittaa toisen taulukon ensisijaiseen avaimeen! Se auttaa yhdistรคmรครคn taulukoita

  • Vierasavaimella voi olla eri nimi kuin sen ensisijaisella avaimella
  • Se varmistaa, ettรค yhden taulukon riveillรค on vastaavat rivit toisessa
  • Toisin kuin ensisijaisen avaimen, niiden ei tarvitse olla yksilรถllisiรค. Useimmiten ne eivรคt ole
  • Vieraat avaimet voivat olla tyhjiรค, vaikka ensisijaiset avaimet eivรคt voi olla

Tietokanta โ€“ vieras avain

Miksi tarvitset vierasavaimen?

Oletetaan, ettรค noviisi lisรครค taulukkoon B tietueen, kuten

Miksi tarvitset vierasavaimen

Voit lisรคtรค vieraaseen avaimeesi vain sellaisia โ€‹โ€‹arvoja, jotka ovat olemassa pรครคtaulukon ainutlaatuisessa avaimessa. Tรคmรค auttaa parantamaan viittauksen eheyttรค.

Yllรค oleva ongelma voidaan ratkaista ilmoittamalla taulukon 2 jรคsenyystunnus taulukon 1 jรคsenyystunnuksen vieraana avaimena

Jos joku yrittรครค nyt lisรคtรค jรคsentunnuskenttรครคn arvon, jota ei ole ylรคtason taulukossa, nรคytetรครคn virhe!

Mitรค ovat transitiiviset toiminnalliset riippuvuudet?

Transitiivinen toiminnallinen riippuvuus on, kun muutat ei-avainsaraketta, voi aiheuttaa minkรค tahansa muun ei-avainsanan muuttumisen

Harkitse taulukkoa 1. Muuta kuin avainsaraketta Koko nimi voi muuttaa tervehdyksen.

Transitiiviset toiminnalliset riippuvuudet

Siirrytรครคn 3NF:รครคn

Kolmas normaali muoto (3NF)

  • Sรครคntรถ 1 - Ole 2NF:ssรค
  • Sรครคntรถ 2 โ€“ Ei transitiivisia toiminnallisia riippuvuuksia

Siirtรครคksemme 2NF-pรถytรคmme 3NF:ksi, meidรคn on jรคlleen jaettava pรถytรคmme.

3NF Esimerkki

Alla on esimerkki 3NF:stรค SQL-tietokannassa:

3NF Esimerkki

3NF Esimerkki

3NF Esimerkki

Olemme jรคlleen jakaneet pรถytรคmme ja luoneet uuden taulukon, joka tallentaa Tervehdykset.

Transitiivisia toiminnallisia riippuvuuksia ei ole, joten taulukkomme on 3NF:ssรค

Taulukossa 3 tervehdystunnus on ensisijainen avain ja taulukossa 1 tervehdystunnus on vieras taulukon 3 ensisijaiselle avaimelle

Pieni esimerkkimme on nyt tasolla, jota ei voida edelleen hajottaa korkeamman normaalimuodon normalisoinnin saavuttamiseksi DBMS:ssรค. Itse asiassa se on jo korkeammissa normalisointimuodoissa. Monimutkaisissa tietokannoissa tarvitaan yleensรค erillisiรค ponnisteluja siirtyรคkseen tietojen normalisoinnin seuraaville tasoille. Keskustelemme kuitenkin DBMS:n normalisoinnin seuraavista tasoista lyhyesti seuraavassa.

Boyce-Coddin normaalimuoto (BCNF)

Vaikka tietokanta on 3:ssard Normaali muoto, silti poikkeavuuksia syntyy, jos siinรค on enemmรคn kuin yksi Ehdokas Nรคppรคintรค.

Joskus BCNF:รครค kutsutaan myรถs nimellรค 3.5 Normaali muoto.

Neljรคs normaali muoto (4NF)

Jos mikรครคn tietokantataulukko-ilmentymรค ei sisรคllรค kahta tai useampaa riippumatonta ja moniarvoista dataa, jotka kuvaavat relevanttia kokonaisuutta, se on 4.th Normaali muoto.

Viides normaali muoto (5NF)

Pรถytรค on 5:ssรคth Normaali muoto vain, jos se on 4NF-muodossa ja sitรค ei voida hajottaa useiksi pienemmiksi taulukoiksi ilman tietojen menetystรค.

Ehdotettu kuudes normaalimuoto (6NF).

6th Normaalimuotoa ei ole standardoitu, mutta tietokantaasiantuntijat keskustelevat siitรค kuitenkin jonkin aikaa. Toivottavasti meillรค olisi selkeรค ja standardoitu mรครคritelmรค 6:lleth Normaali muoto lรคhitulevaisuudessaโ€ฆ

Mitรค etuja normalisoinnista on?

  • Paranna tietojen johdonmukaisuutta: Normalisointi varmistaa, ettรค jokainen tieto tallennetaan vain yhteen paikkaan, mikรค vรคhentรครค epรคjohdonmukaisten tietojen mahdollisuuksia. Kun tiedot pรคivitetรครคn, ne tarvitsee pรคivittรครค vain yhteen paikkaan, mikรค varmistaa johdonmukaisuuden.
  • Vรคhennรค tietojen redundanssia: Normalisointi auttaa poistamaan pรครคllekkรคiset tiedot jakamalla ne useisiin toisiinsa liittyviin taulukoihin. Tรคmรค voi sรครคstรครค tallennustilaa ja myรถs tehostaa tietokantaa.
  • Paranna kyselyn tehokkuutta: Normalisoiduista tietokannoista on usein helpompi tehdรค kyselyitรค. Koska tiedot on jรคrjestetty loogisesti, kyselyt voidaan optimoida toimimaan nopeammin.
  • Tee tiedoista mielekkรครคmpiรค: Normalisointiin liittyy rypistyminenping tiedot jรคrkevรคllรค ja intuitiivisella tavalla. Tรคmรค voi helpottaa tietokannan ymmรคrtรคmistรค ja kรคyttรถรค, erityisesti niille, jotka eivรคt ole suunnitelleet sitรค.
  • Vรคhennรค poikkeamien mahdollisuuksia: Poikkeamat ovat ongelmia, joita voi ilmetรค tietoja lisรคttรคessรค, pรคivitettรคessรค tai poistettaessa. Normalisointi voi vรคhentรครค nรคiden poikkeamien mahdollisuuksia varmistamalla, ettรค tiedot jรคrjestetรครคn loogisesti.

Mitkรค ovat normalisoinnin haitat?

  • Lisรครคntynyt monimutkaisuus: Normalisointi voi johtaa monimutkaisiin suhteisiin. Suuri mรครคrรค vierasavaimia sisรคltรคviรค taulukoita voi olla vaikea hallita, mikรค johtaa sekaannukseen.
  • Vรคhentynyt joustavuus: Tiukkojen normalisointisรครคntรถjen vuoksi tietojen, jotka eivรคt noudata nรคitรค sรครคntรถjรค, tallentamisessa saattaa olla vรคhemmรคn joustavuutta.
  • Lisรครคntyneet tallennusvaatimukset: Vaikka normalisointi vรคhentรครค redundanssia, saattaa olla tarpeen varata enemmรคn tallennustilaa lisรคtaulukoille ja indekseille.
  • Suorituskyvyn yleiskustannukset: Useiden pรถytien yhdistรคminen voi olla kallista suorituskyvyn kannalta. Mitรค normalisoituneempi data, sitรค enemmรคn liitoksia tarvitaan, mikรค voi hidastaa tiedon hakuaikoja.
  • Tietokontekstin katoaminen: Normalisointi hajottaa tiedot erillisiin taulukoihin, mikรค voi johtaa liiketoimintakontekstin menettรคmiseen. Asiaan liittyvien taulukoiden tutkiminen on vรคlttรคmรคtรถntรค datan kontekstin ymmรคrtรคmiseksi.
  • Asiantuntijatiedon tarve: Normalisoidun tietokannan toteuttaminen edellyttรครค tietojen syvรคllistรค ymmรคrtรคmistรค, tietojen vรคlisiรค suhteita ja normalisointisรครคntรถjรค. Tรคmรค vaatii asiantuntemusta ja voi viedรค aikaa.

Siinรค kaikki SQL:n normalisointiin!!!

UKK

Tietokannan hallintajรคrjestelmien normalisointi on prosessi, jossa tietoja jรคrjestetรครคn tietokannassa redundanssin vรคhentรคmiseksi ja tietojen eheyden parantamiseksi. Se sisรคltรครค suurten taulukoiden jakamisen pienempiin, toisiinsa liittyviin taulukoihin ja niiden vรคlisten suhteiden mรครคrittรคmisen. Tรคmรค varmistaa, ettรค tiedot tallennetaan loogisesti ja johdonmukaisesti, mikรค tehostaa pรคivityksiรค, lisรคyksiรค ja poistoja ja estรครค poikkeavuuksia.

Datan normalisointi jรคsentรครค tietokantataulukoita toiston vรคlttรคmiseksi. Esimerkiksi sen sijaan, ettรค asiakkaan osoite tallennettaisiin jokaiseen tilaustietueeseen, normalisointi sijoittaa asiakastiedot erilliseen "Asiakas"-taulukkoon, joka on linkitetty avaimella. Tรคmรค vรคhentรครค redundanssia โ€“ joten jos osoite muuttuu, se pรคivittyy vain kerran. Tuloksena on puhtaampi ja tehokkaampi tietokanta, jossa on tarkkaa ja yhdenmukaista tietoa.

Normalisoinnin tarkoituksena on poistaa tarpeetonta dataa, minimoida poikkeavuuksia ja varmistaa tietokannan tehokkuus. Se yksinkertaistaa yllรคpitoa kee-tyรถkalun avulla.ping toisiinsa liittyvรคn tiedon jรคrjestyksessรค, vรคhentรครค tallennustilan hukkaa ja varmistaa tiedon yhtenรคisyyden. Normalisointi parantaa myรถs kyselyiden suorituskykyรค jรคsentรคmรคllรค tiedot loogisesti, jolloin kehittรคjรคt ja kรคyttรคjรคt pรครคsevรคt kรคsiksi tarkkaan tietoon ilman pรครคllekkรคisyyksiรค tai ristiriitaisia โ€‹โ€‹merkintรถjรค.

Kolmas normaalimuoto (3NF) on normalisoinnin vaihe, joka varmistaa, ettรค jokainen ei-avainattribuutti on riippuvainen vain ensisijaisesta avaimesta eikรค muista ei-avainattribuuteista. Esimerkiksi tyรถntekijรคtaulukossa "Osaston nimi" tulisi erottaa osastotaulukkoon sen sijaan, ettรค se perustuisi "Osaston tunnisteeseen". Tรคmรค vรคlttรครค transitiiviset riippuvuudet ja varmistaa tiedonhallinnan tarkkuuden, johdonmukaisuuden ja tehokkuuden.

Yhteenveto

  • Tietokannan suunnittelu on kriittinen tietokannan hallintajรคrjestelmรคn onnistuneelle toteuttamiselle, joka tรคyttรครค yritysjรคrjestelmรคn tietovaatimukset.
  • DBMS:n normalisointi on prosessi, joka auttaa tuottamaan tietokantajรคrjestelmiรค, jotka ovat kustannustehokkaita ja joissa on parempia suojausmalleja.
  • Toiminnalliset riippuvuudet ovat erittรคin tรคrkeรค osa normalisointiprosessia
  • Useimmat tietokantajรคrjestelmรคt ovat normalisoituja tietokantoja DBMS:n kolmanteen normaalimuotoon asti.
  • Ensisijainen avain yksilรถi ne taulukon tietueet, eikรค se voi olla nolla
  • Vierasavain auttaa yhdistรคmรครคn taulukon ja viittaa ensisijaiseen avaimeen

Tiivistรค tรคmรค viesti seuraavasti: