Rekommenderas, 2024

Redaktionen

Skillnad mellan 3NF och BCNF

Normalisering är en metod som avlägsnar redundans från ett förhållande och därmed minimerar införandet, raderingen och uppdateringen av anomalier som försämrar databasernas prestanda. I denna artikel kommer vi att skilja mellan två högre normala former, dvs 3NF och BCNF. Den grundläggande skillnaden mellan 3NF och BCNF är att 3NF eliminerar det transitiva beroendet från ett förhållande och ett bord som ska vara i BCNF, det triviala funktionella beroende X-> Y i ett förhållande måste hålla, endast om X är supernyckeln.

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

Jämförelsediagram

Grunder för jämförelse3NFBCNF
BegreppIngen icke-prime-attribut måste vara transitivt beroende av kandidatnyckeln.För något trivialt beroende i ett förhållande R säger X-> Y, X bör vara en supernyckel för relation R.
Dependency3NF kan erhållas utan att offra alla beroenden.Beroenden kan inte bevaras i BCNF.
SönderfallLossless sönderdelning kan uppnås i 3NF.Lossless sönderdelning är svår att uppnå i BCNF.

Definition av 3NF

En tabell eller ett förhållande anses endast vara i tredje normala formuläret om tabellen redan är i 2NF och det finns ingen attribut som inte är prime, transiterande beroende av kandidatens nyckel i en relation.

Så innan jag tar upp processen att normalisera ett bord i 3NF, låt mig diskutera kandidatnyckeln. En kandidatnyckel är minimal supernyckel, dvs en supernyckel med minsta attribut som kan definiera alla attribut av ett förhållande. Så, när du normaliserar ditt bord förstår du först kandidatnyckeln för ett visst förhållande. Attributen som ingår i kandidatnyckeln är primära attribut och attribut som inte är en del av kandidatnyckeln är icke-primära attribut .

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

Iakttagande av funktionella beroenden kan vi dra slutsatsen att AB är en kandidatnyckel för relationen R eftersom att vi använder nyckel AB för att söka värdet för alla attribut i en relation R. Så A, B blir huvudattribut eftersom de tillsammans gör kandidatnyckel. Attributen C, D, E, F blir icke-primära attribut eftersom ingen av dem är en del av en kandidatnyckel.

Bordet är i 2NF eftersom ingen icke-prime-attribut är delvis beroende av kandidatnyckel

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

För att avlägsna detta transitiva beroende måste vi dela upp relationen R. När du delar upp ett förhållande placerar du alltid kandidatnyckeln och alla attribut som beror på den kandidatnyckeln i det första förhållandet. I nästa uppdelade relation kommer vi att placera attributet som orsakar transitivt beroende och även de attribut som beror på det i det andra förhållandet.

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

Definition av BCNF

BCNF anses vara starkare än 3NF. Relationen R att vara i BCNF måste vara i 3NF . Och varhelst ett icke-trivialt funktionellt beroende A -> B håller i förhållande R, måste A vara en supernyckel av relation R. Som vi vet är Supernyckeln en nyckel som har en enda egenskap eller uppsättning attribut som bestämmer hela attribut av ett förhållande.

Låt oss nu gå vidare 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 förhållandet R kan vi säga att A och BF är kandidatnycklar till relation R, eftersom de ensam kan söka värdet för alla attribut i relationen R. Så A, B, F är huvudattributen medan C och D är icke-primära attribut. Inget transitivt beroende ses i de ovan beskrivna funktionella beroenden. Följaktligen är bordet R i 3NF.

Men ett funktionellt beroende, dvs D -> F, bryter mot definitionen av BCNF, enligt vilken, om D -> F existerar, bör D vara supernyckeln som inte är fallet här. Så vi delar upp förhållandet R.

Nu är tabellerna R1 nd R2 i BCNF. Relation R1 har två kandidatnycklar A och B, det triviala funktionella beroendet av R1 dvs A-> BCD och B -> ACD, håll för BCNF som A och B är supernycklarna för relation. Relation R2 har D som sin kandidatnyckel och det funktionella beroende D -> F håller också för BCNF då D är en Super Key.

Viktiga skillnader mellan 3NF och BCNF

  1. 3NF säger att ingen icke-prime-attribut måste vara transitivt beroende av förhållandets kandidatnyckel. På andra händer hävdar BCNF att om ett trivialt funktionellt beroende X -> Y existerar för ett förhållande; då måste X vara en supernyckel.
  2. 3NF kan erhållas utan att offra relationen. Beroende kan emellertid inte bevaras när BCNF erhålls.
  3. 3NF kan uppnås utan att förlora någon information från den gamla tabellen, medan vi, samtidigt som vi erhåller BCNF, kan tappa lite information från det gamla bordet.

Slutsats:

BCNF är mycket restriktiv än 3NF vilket hjälper till att normalisera tabellen mer. Relationen i 3NF har minsta redundans kvar som vidare avlägsnas av BCNF.

Top