Lad os diskutere forskellene mellem 3NF og BCNF ved hjælp af sammenligningstabel vist nedenfor.
Sammenligningstabel
Grundlag for sammenligning | 3NF | BCNF |
---|---|---|
Koncept | Ingen 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ængighed | 3NF kan opnås uden at ofre alle afhængigheder. | Afhængigheder kan ikke bevares i BCNF. |
nedbrydning | Lossless 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.
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.
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.
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.
Nøgleforskelle mellem 3NF og BCNF
- 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.
- 3NF kan opnås uden at ofre afhængighedsforholdet. Imidlertid kan afhængighed måske ikke bevares, mens BCNF opnås.
- 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.