3NF vs BCNF

Normalisointi on prosessi, joka suoritetaan minimoimaan relaatiotietokantojen tiedoissa olevat redundanssit. Tämä prosessi jakaa pääasiassa suuret taulukot pienempiin taulukoihin, joissa on vähemmän irtisanomisia. Nämä pienemmät taulukot liittyvät toisiinsa tarkoin määriteltyjen suhteiden kautta. Hyvin normalisoidussa tietokannassa kaikki tietojen muutokset vaativat vain yhden taulukon muokkaamisen. Kolmannen normaalimuodon (3NF) otti käyttöön vuonna 1971 Edgar F. Codd, joka on myös relaatiomallin ja normalisoinnin käsitteen keksijä. Boyce-Codd-normaalimuoto (BCNF) otettiin käyttöön vuonna 1974, Codd ja Raymond F. Boyce.

Mikä on 3NF?

3NF on kolmas normaalimuoto, jota käytetään relaatiotietokannan normalisointiin. Coddin määritelmän mukaan taulukon sanotaan olevan 3NF: ssä, vain ja vain jos kyseinen taulukko on toisessa normaalimuodossa (2NF), ja kaikkien taulukon attribuuttien, jotka eivät kuulu ehdokkausavaimeen, pitäisi olla suoraan riippuvaisia jokainen taulukon ehdokasavain. Carlo Zaniolo tuotti vuonna 1982 eri tavalla määritellyn määritelmän 3NF: lle. 3NF: n mukaiset taulukot eivät yleensä sisällä poikkeamia, joita esiintyy lisäämällä, poistamalla tai päivitettäessä tietueita taulukkoon.

Mikä on BCNF?

BCNF (tunnetaan myös nimellä 3.5NF) on toinen normaali muoto, jota käytetään relaatiotietokannan normalisointiin. Se otettiin käyttöön sieppaamaan joitain poikkeamia, joita 3NF ei käsittele. Taulukon sanotaan olevan BCNF: ssä, jos ja vain jos jokaisessa muodon A → B riippuvuudessa, jotka eivät ole triviaalia, A on supernäppäin. Pöydän hajottaminen, joka ei ole BCNF-normaalimuodossa, ei takaa taulukoiden tuottamista BCNF-muodossa (säilyttäen samalla alkuperäisessä taulukossa olleet riippuvuudet).

Mitä eroa on 3NF: n ja BCNF: n välillä?

Sekä 3NF että BCNF ovat normaaleja muotoja, joita käytetään relaatiotietokannoissa redundanssien minimoimiseksi taulukoissa. Taulukossa, joka on BCNF-normaalimuodossa, jokaiselle muodon A → B ei-triviaaliselle funktionaaliselle riippuvuudelle A on supernäppäin, kun taas 3NF: n mukaisen taulukon tulisi olla 2NF: ssä, ja jokaisen ei-prime attribuutin pitäisi olla suoraan riippuvainen jokaisesta ehdokasavaimesta taulukossa. BCNF: ää pidetään vahvempana normaalimuodona kuin 3NF, ja se kehitettiin sieppaamaan joitain poikkeavuuksia, joita 3NF ei pystynyt tarttumaan. BCNF-muodon mukaisen taulukon hankkiminen edellyttää 3NF: n taulukon purkamista. Tämä hajoaminen johtaa ylimääräisiin liittymisoperaatioihin (tai Cartesian-tuotteisiin) kyselyitä suoritettaessa. Tämä pidentää laskennallista aikaa. Toisaalta BCNF: n mukaisissa taulukoissa olisi vähemmän redundansseja kuin taulukoissa, jotka vain täyttävät 3NF: n. Lisäksi suurimman osan ajasta on mahdollista saada taulukko, joka noudattaa 3NF: ää estämättä riippuvuuden säilymistä ja häviötöntä liittymistä. Mutta tämä ei ole aina mahdollista BCNF: llä.