Aanbevolen, 2024

Editor'S Choice

Verschil tussen 3NF en BCNF

Normalisatie is een methode die redundantie uit een relatie verwijdert, waardoor de invoeg-, wis- en update-anomalieën die de prestaties van databases verslechteren worden geminimaliseerd. In dit artikel zullen we onderscheid maken tussen twee hogere normale vormen, namelijk 3NF en BCNF. Het fundamentele verschil tussen 3NF en BCNF is dat 3NF de transitieve afhankelijkheid van een relatie en een tabel in BCNF elimineert, de triviale functionele afhankelijkheid die X-> Y in een relatie moet hebben, alleen als X de super-sleutel is.

Laten we de verschillen tussen 3NF en BCNF bespreken met behulp van de onderstaande vergelijkingsgrafiek.

Vergelijkingstabel

Basis voor vergelijking3NFBCNF
ConceptGeen enkel niet-primair kenmerk moet transitief afhankelijk zijn van de sleutel van de kandidaat.Voor elke triviale afhankelijkheid in een relatie R zeg je X-> Y, X zou een super-sleutel moeten zijn van relatie R.
Afhankelijkheid3NF kan worden verkregen zonder alle afhankelijkheden op te offeren.Afhankelijkheden mogen niet worden bewaard in BCNF.
OntledingLossless-ontleding kan worden bereikt in 3NF.Losseloze ontleding is moeilijk te bereiken in BCNF.

Definitie van 3NF

Een tabel of een relatie wordt alleen geacht in de derde normale vorm te zijn als de tabel al in 2NF is en er geen niet-primair kenmerk transitief afhankelijk is van de kandidaatsleutel van een relatie.

Dus, voordat ik het proces van het normaliseren van een tabel in 3NF behandel, staat u mij toe de kandidaat-sleutel te bespreken. Een Kandidaatsleutel is een minimale super sleutel, dwz een super sleutel met minimale attributen die alle attributen van een relatie kunnen definiëren. Dus, tijdens het normaliseren van je tafel, erken je eerst de kandidaat-sleutel van een bepaalde relatie. De kenmerken die deel uitmaken van de kandidaatsleutel zijn hoofdattributen en de attributen die niet het deel van de kandidaatsleutel zijn, zijn niet-primaire attributen .

Als we nu een relatie R (A, B, C, D, E, F) hebben en we volgende functie-afhankelijkheden hebben voor de relatie R.

Door functionele afhankelijkheden te observeren, kunnen we concluderen dat AB een kandidaat-sleutel is voor relatie R, omdat we met sleutel AB de waarde kunnen zoeken voor al het attribuut in een relatie R. Dus A, B wordt prime-attributen als ze samen kandidaat-sleutel maken. De attributen C, D, E, F worden niet-primaire attributen omdat geen ervan het deel van een kandidaatsleutel is.

De tabel bevindt zich in 2NF omdat geen niet-prime-kenmerk gedeeltelijk afhankelijk is van de kandidaat-sleutel

Maar er is een transitieve afhankelijkheid waargenomen tussen de aangeboden functionele afhankelijkheden, omdat het attribuut F niet direct afhankelijk is van kandidaatsleutel AB . In plaats daarvan is attribuut F transitief afhankelijk van kandidaatsleutel AB via attribuut D. Totdat kenmerk D een waarde heeft die we kunnen bereiken met de kenmerkwaarde van F, van de kandidaat-sleutel AB. In het geval dat de waarde van attribuut D NULL is, kunnen we de waarde van F nooit vinden / opzoeken met behulp van kandidaat-sleutel AB. Dit is de reden waarom 3NF eist om de transitieve afhankelijkheid van de relaties te verwijderen.

Dus om deze transitieve afhankelijkheid te verwijderen, moeten we de relatie R verdelen. Terwijl u een relatie deelt, plaatst u altijd de kandidaat-sleutel en alle attributen die afhankelijk zijn van die kandidaat-sleutel in de eerste relatie. In de volgende verdeelde relatie plaatsen we het attribuut dat de transitieve afhankelijkheid veroorzaakt en ook de attributen die ervan afhankelijk zijn in de tweede relatie.

Nu zijn de tabellen R1 en R2 in 3NF omdat er geen gedeeltelijke en transitieve afhankelijkheden overblijven. Relatie R1 (A, B, C, D, E) heeft een kandidaattoets AB, terwijl relatie R2 (D, E) D als kandidaat-sleutel heeft.

Definitie van BCNF

BCNF wordt beschouwd als sterker dan 3NF. De relatie R in BCNF moet in 3NF zijn . En waar een niet-triviale functionele afhankelijkheid A -> B in relatie R houdt, dan moet A een superkey van relatie R zijn. Zoals we weten, is Super key een sleutel die één attribuut of reeks attributen heeft die bepaalt, de hele attributen van een relatie.

Laten we nu een voorbeeld nemen om BCNF beter te begrijpen. Laten we aannemen dat we een relatie R (A, B, C, D, F) hebben met volgende functionele afhankelijkheden.

Door de relatie R te observeren, kunnen we zeggen dat A en BF kandidaat-sleutels zijn van relatie R, omdat alleen zij de waarde kunnen zoeken voor alle attributen in de relatie R. Dus A, B, F zijn de hoofdattributen terwijl, C en D zijn niet-prime attributen. Er is geen transitieve afhankelijkheid waargenomen in de functionele afhankelijkheden die hierboven aanwezig zijn. Vandaar dat de tabel R in 3NF is.

Maar één functionele afhankelijkheid dwz D -> F schendt de definitie van BCNF, volgens welke, als D -> F bestaat, dan D de super sleutel zou moeten zijn, wat hier niet het geval is. Dus we zullen de relatie R verdelen.

Nu staan ​​de tabellen R1 en R2 in BCNF. Relatie R1 heeft twee kandidaatsleutels A en B, de triviale functionele afhankelijkheid van R1, dwz A-> BCD en B -> ACD, hold voor BCNF als A en B de supersleutel voor relatie zijn. Relatie R2 heeft D als kandidaat-sleutel en de functionele afhankelijkheid D -> F geldt ook voor BCNF, aangezien D een Super-sleutel is.

Belangrijkste verschillen tussen 3NF en BCNF

  1. 3NF stelt dat geen attribuut non-prime transitief afhankelijk moet zijn van de kandidaat-sleutel van de relatie. Aan de andere kant stelt BCNF dat als een triviale functionele afhankelijkheid X -> Y voor een relatie bestaat; dan moet X een super sleutel zijn.
  2. 3NF kan worden verkregen zonder de afhankelijkheid van een relatie op te offeren. De afhankelijkheid kan echter niet worden behouden tijdens het verkrijgen van BCNF.
  3. 3NF kan worden bereikt zonder informatie uit de oude tabel te verliezen, terwijl we bij het verkrijgen van BCNF informatie van de oude tabel kunnen verliezen.

Conclusie:

BCNF is veel restrictiever dan 3NF, wat helpt om de tabel meer te normaliseren. De relatie in 3NF heeft nog een minimum aan overtolligheid die verder wordt verwijderd door de BCNF.

Top