Anbefalet, 2024

Redaktørens Valg

Forskel mellem 3NF og BCNF

Normalisering er en metode, der fjerner redundans fra en relation og derved minimerer indsættelsen, sletningen og opdateringen af ​​uregelmæssigheder, der nedbryder databasernes ydeevne. I denne artikel vil vi skelne mellem to højere normale former, nemlig 3NF og BCNF. Den grundlæggende forskel mellem 3NF og BCNF er at 3NF eliminerer den transitive afhængighed fra en relation og et bord, der skal være i BCNF, den trivielle funktionelle afhængighed X-> Y i en relation skal holde, kun hvis X er supernøglen.

Lad os diskutere forskellene mellem 3NF og BCNF ved hjælp af sammenligningstabel vist nedenfor.

Sammenligningstabel

Grundlag for sammenligning3NFBCNF
KonceptIngen non-prime-attributter skal være midlertidigt afhængige af kandidatnøglen.For enhver triviel afhængighed i en relation R siger X-> Y, X bør være en supernøgle af relation R.
Afhængighed3NF kan opnås uden at ofre alle afhængigheder.Afhængigheder kan ikke bevares i BCNF.
nedbrydningLossless dekomponering kan opnås i 3NF.Lossløs nedbrydning er svært at opnå i BCNF.

Definition af 3NF

En tabel eller en relation anses kun for at være i tredje normale formular, hvis tabellen allerede er i 2NF, og der er ikke nogen ikke-primær attribut, der er afhængig af kandidatsnøglen af en relation.

Så før jeg behandler processen med normalisering af et bord i 3NF, lad mig diskutere kandidatnøglen. En kandidatnøgle er minimal supernøgle, dvs. en supernøgle med mindst egenskaber, der kan definere alle attributter af en relation. Så i processen med at normalisere dit bord først anerkender du kandidatnøglen til en given relation. Attributterne, der er en del af kandidatnøglen, er primære attributter, og de attributter, der ikke er en del af kandidatnøglen, er ikke-primære attributter .

Nu hvis vi har en relation R (A, B, C, D, E, F) og vi har følgende funktionsafhængigheder for forholdet R.

Iagttagelse af funktionelle afhængigheder kan vi konkludere, at AB er en kandidatnøgle for relation R, fordi vi ved hjælp af nøgle AB kan søge værdien for al attributten i en relation R. Så A, B bliver primære attributter, da de tilsammen laver kandidatnøgle. Attributterne C, D, E, F bliver ikke-primære attributter, fordi ingen af ​​dem er en del af en kandidatnøgle.

Tabellen er i 2NF, da ingen ikke-prime-attribut er delvist afhængig af kandidatnøglen

Men en transitiv afhængighed observeres blandt de funktionelle afhængigheder, der tilbydes, da attributten F ikke er direkte afhængig af kandidatnøglen AB . I stedet er attribut F afhængig af kandidatnøglen AB via attribut D. Till attribut D har en værdi, som vi kan nå for at tildele værdi af F, fra kandidatnøglen AB. Hvis værdien af ​​attribut D er NULL, kan vi aldrig finde / søge værdien af ​​F ved hjælp af kandidatnøglen AB. Dette er grunden til, at 3NF kræver at fjerne den transitive afhængighed fra relationerne.

For at fjerne denne transitive afhængighed skal vi dele forholdet R. Mens du deler et forhold, skal du altid placere kandidatnøglen og alle de attributter, der afhænger af den kandidatnøgle i det første forhold. I næste delte relation vil vi placere attributten, der forårsager transitiv afhængighed og også de attributter, der afhænger af det i det andet forhold.

Nu er tabellerne R1 og R2 i 3NF, da de ikke har nogen partielle og transitive afhængigheder tilbage. Forholdet R1 (A, B, C, D, E) har en kandidatnøgle AB, mens forholdet R2 (D, E) har D som dets kandidatnøgle.

Definition af BCNF

BCNF anses for at være stærkere end 3NF. Relationen R for at være i BCNF skal være i 3NF . Og hvor en ikke-triviel funktionel afhængighed A -> B holder i forhold til R, så skal A være en supernøgle af relation R. Som vi ved, er supernøgle en nøgle, der har en enkelt attribut eller et sæt attributter, der bestemmer hele attributter af en relation.

Lad os nu gå videre til et eksempel for at forstå BCNF på en bedre måde. Lad os antage, at vi har en relation R (A, B, C, D, F), som har følgende funktionelle afhængigheder.

Ved at observere forholdet R kan vi sige, at A og BF er kandidatnøgler til relation R, fordi de alene kan søge værdien for alle attributter i forholdet R. Så A, B, F er de primære attributter, mens C og D er ikke-primære attributter. Ingen transitiv afhængighed observeres i de ovennævnte funktionelle afhængigheder. Derfor er bordet R i 3NF.

Men en funktionel afhængighed, dvs. D -> F, overtræder definitionen af ​​BCNF, ifølge hvilken, hvis D -> F eksisterer, bør D være supernøglen, som ikke er tilfældet her. Så vi vil dele forholdet R.

Nu er tabellerne R1 nd R2 i BCNF. Forhold R1 har to kandidatnøgler A og B, den trivielle funktionelle afhængighed af R1 dvs. A-> BCD og B -> ACD, hold for BCNF som A og B er supernøglerne for relation. Forhold R2 har D som sin kandidatnøgle, og den funktionelle afhængighed D -> F holder også for BCNF, da D er en Supernøgle.

Nøgleforskelle mellem 3NF og BCNF

  1. 3NF fastslår, at ingen ikke-primære attributter skal være transitivt afhængige af forholdets kandidatnøgle. På den anden side hedder BCNF, at hvis en triviel funktionel afhængighed X -> Y eksisterer for en relation; så skal X være en supernøgle.
  2. 3NF kan opnås uden at ofre afhængighedsforholdet. Imidlertid kan afhængighed måske ikke bevares, mens BCNF opnås.
  3. 3NF kan opnås uden at miste nogen information fra den gamle tabel, mens vi samtidig kan få nogle oplysninger fra den gamle bord, mens vi opnår BCNF.

Konklusion:

BCNF er meget restriktiv end 3NF, som hjælper med at normalisere bordet mere. Forholdet i 3NF har en minimumsredundans tilbage, som fjernes yderligere af BCNF.

Top