Skillnad mellan 3NF och BCNF

Författare: Laura McKinney
Skapelsedatum: 1 April 2021
Uppdatera Datum: 13 Maj 2024
Anonim
Difference between 3NF and BCNF, De-normalization
Video: Difference between 3NF and BCNF, De-normalization

Innehåll


Normalisering är en metod som tar bort redundans från en relation därmed minimerar infogning, radering och uppdatering av avvikelser som försämrar databasernas prestanda. I den här artikeln kommer vi att skilja mellan två högre normala former, dvs 3NF och BCNF. Den grundläggande skillnaden mellan 3NF och BCNF är den 3NF eliminerar det transitiva beroendet från en relation och en tabell som ska vara i BCNF, det triviala funktionella beroendet X-> Y i en relation måste hålla, bara om X är supernyckeln.

Låt oss diskutera skillnaderna mellan 3NF och BCNF med hjälp av jämförelsediagram som visas nedan.

  1. Jämförelsediagram
  2. Definition
  3. Viktiga skillnader
  4. Slutsats

Jämförelsediagram

Grund för jämförelse3NFBCNF
BegreppInga icke-primära attribut får vara övergående beroende av kandidatnyckeln.För alla triviala beroenden i en relation R säga X-> Y, bör X vara en super nyckel av relation R.
Dependency3NF kan erhållas utan att offra alla beroenden.Beroenden kanske inte bevaras i BCNF.
SönderfallFörlustfri nedbrytning kan uppnås i 3NF.Förlustfri nedbrytning är svår att uppnå i BCNF.


Definition av 3NF

En tabell eller en relation anses vara i Tredje normalform bara om bordet redan finns i 2NF och det finns ingen icke-prime attribut transitivt beroende på kandidatnyckel av en relation.

Så innan jag behandlar processen med att normalisera en tabell i 3NF, låt mig diskutera kandidatnyckeln. EN Kandidatnyckel är minimal supernyckel dvs en supernyckel med minsta attribut som kan definiera alla attribut i en relation. Så i processen att normalisera ditt bord känner du först igenom kandidatnyckeln för en given relation. Attribut som ingår i kandidatnyckeln är främsta attributoch attributen som inte ingår i kandidatnyckeln är icke-primära attribut.

Om vi ​​nu har en relation R (A, B, C, D, E, F) och vi har följande funktionsberoende för relationen R.


Genom att observera funktionella beroenden kan vi dra slutsatsen AB är en kandidatnyckel för relation R eftersom vi använder nyckel AB kan vi söka efter värdet för alla attribut i en relation R. Så A, B blir främsta attribut när de tillsammans gör kandidatnyckeln. Attributen C, D, E, F blir icke-prime attribut eftersom ingen av dem är en del av en kandidatnyckel.

Tabellen finns i 2NF eftersom inget icke-prime-attribut delvis är beroende av kandidatnyckeln

Men ett transitivt beroende observeras bland de tillhandahållna funktionella beroenden som attributet F är inte direkt beroende av kandidatnyckeln AB. Istället attribut F är transitivt beroende på kandidatnyckel AB via attribut D. Till att attribut D har något värde vi kan nå till attributvärdet för F, från kandidatnyckeln AB. Om värdet på attribut D är NULL kan vi aldrig hitta / söka efter värdet på F med hjälp av kandidatnyckel AB. Detta är anledningen till att 3NF kräver att ta bort det transitiva beroendet från relationerna.

Så för att ta bort detta övergående beroende måste vi dela relationen R. Samtidigt som du delar en relation placerar du alltid kandidatnyckeln och alla attribut som beror på den kandidatnyckeln i den första relationen. I nästa uppdelade relation kommer vi att placera attributet som orsakar transitivt beroende och även attributen som är beroende av det i den andra relationen.

Nu är tabellerna R1 och R2 i 3NF eftersom det inte har några partiella och transitiva beroenden kvar. Relation R1 (A, B, C, D, E) har en kandidatnyckel AB Förhållandet R2 (D, E) har D som kandidatnyckel.

Definition av BCNF

BCNF anses vara starkare än 3NF. Förhållandet R som ska vara i BCNF måste vara i 3NF. Och var som helst icke-trivialt funktionsberoende A -> B håller i förhållande R, då EN måste vara en supernyckel av relation R. Som vi vet är Super key en nyckel som har ett enda attribut eller uppsättning attribut som bestämmer, hela attributen för en relation.

Låt oss nu gå till ett exempel för att förstå BCNF på ett bättre sätt. Låt oss anta att vi har en relation R (A, B, C, D, F), som har följande funktionella beroenden.

Genom att observera relationen R kan vi säga det EN och BF är kandidatnycklar för relation R, eftersom de enbart kan söka efter värdet för alla attribut i relationen R. Så A, B, F är främsta attribut medan C och D är icke-prime attribut. Inget transitivt beroende observeras i de funktionella beroenden som finns närvarande ovan. Följaktligen är tabellen R i 3NF.

Men ett funktionellt beroende, dvs. D -> F bryter mot definitionen av BCNF, enligt vilken, om D -> F finns då D borde vara supernyckel vilket inte är fallet här. Så vi kommer att dela relationen R.

Nu är tabellerna R1 och R2 i BCNF. Relation R1 har två kandidat nycklar EN och B, det triviala funktionella beroendet av R1, dvs A-> BCD och B -> ACD, håll för BCNF eftersom A och B är supertangenterna för relation. Relation R2 har D som dess kandidatnyckel och det funktionella beroendet D -> F gäller också för BCNF eftersom D är en Super Key.

  1. 3NF säger att inget icke-primärt attribut måste vara övergående beroende på kandidatnyckeln för relationen. Å andra sidan säger BCNF att om ett trivialt funktionellt beroende finns X -> Y för en relation; då måste X vara en supernyckel.
  2. 3NF kan erhållas utan att offra relationens beroende. Beroende kanske emellertid inte bevaras när BCNF erhålls.
  3. 3NF kan uppnås utan att förlora någon information från det gamla bordet, medan vi samtidigt kan hämta lite information från det gamla bordet medan vi erhåller BCNF.

Slutsats:

BCNF är mycket begränsande än 3NF som hjälper till att normalisera tabellen mer. Förhållandet i 3NF har minst redundans kvar som ytterligare avlägsnas av BCNF.