Verschil tussen 3NF en BCNF

Schrijver: Laura McKinney
Datum Van Creatie: 1 April 2021
Updatedatum: 17 Kunnen 2024
Anonim
Boyce-Codd Normal Form with example | Comparison between 3NF and BCNF
Video: Boyce-Codd Normal Form with example | Comparison between 3NF and BCNF

Inhoud


Normalisatie is een methode die verwijdert overtolligheid van een relatie waardoor het inbrengen, verwijderen en bijwerken van afwijkingen die de prestaties van databases verminderen, wordt 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 elimineert de transitieve afhankelijkheid van een relatie en een tabel om in BCNF te zijn, de triviale functionele afhankelijkheid X-> Y in een relatie moet vasthouden, alleen als X de supersleutel is.

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

  1. Vergelijkingstabel
  2. Definitie
  3. Belangrijkste verschillen
  4. Gevolgtrekking

Vergelijkingstabel

Basis voor vergelijking3NFBCNF
ConceptGeen niet-primair kenmerk mag tijdelijk afhankelijk zijn van de Kandidaatsleutel.Zeg voor elke triviale afhankelijkheid in een relatie R X-> Y, X een supersleutel van relatie R.
Afhankelijkheid3NF kan worden verkregen zonder alle afhankelijkheden op te offeren.Afhankelijkheden worden mogelijk niet bewaard in BCNF.
OntledingZonder verlies kan ontleding worden bereikt in 3NF.Verliesloze ontbinding is moeilijk te bereiken in BCNF.


Definitie van 3NF

Een tabel of een relatie wordt beschouwd als in Derde normale vorm alleen als de tafel al binnen is 2NF en er is geen non-prime attribuut transitief afhankelijk van de kandidaatsleutel van een relatie.

Dus, voordat ik inga op het proces van het normaliseren van een tabel in 3NF, sta me toe de kandidaatsleutel te bespreken. EEN Kandidaatsleutel is minimale supersleutel d.w.z. een supersleutel met minimumattributen die alle attributen van een relatie kan definiëren. Dus tijdens het normaliseren van uw tabel, herkent u eerst de kandidaatsleutel van een bepaalde relatie. De attributen die deel uitmaken van de kandidaatssleutel zijn hoofdkenmerken, en de attributen die geen deel uitmaken van de kandidaatssleutel wel niet-primaire kenmerken.

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


Als we functionele afhankelijkheden observeren, kunnen we concluderen dat AB is een kandidaatsleutel voor relatie R omdat we met sleutel AB de waarde kunnen doorzoeken voor alle attributen in een relatie R. Dus A, B wordt hoofdkenmerken omdat ze samen een kandidaatssleutel vormen. De attributen C, D, E, F wordt non-prime attributen omdat geen van hen deel uitmaakt van een kandidaatssleutel.

De tabel staat in 2NF omdat geen niet-primair kenmerk gedeeltelijk afhankelijk is van de kandidaatsleutel

Er wordt echter een transitieve afhankelijkheid waargenomen tussen de geboden functionele afhankelijkheden, als het kenmerk F is niet direct afhankelijk van de kandidaatssleutel AB. In plaats daarvan kenmerk F is transitief afhankelijk van kandidaatsleutel AB via kenmerk D. Tot attribuut D heeft enige waarde die we kunnen bereiken om attribuutwaarde van F toe te kennen, van de kandidaatssleutel AB. In het geval dat de waarde van attribuut D NULL is, kunnen we nooit de waarde van F vinden / zoeken met behulp van kandidaatsleutel 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 het verdelen van een relatie altijd de kandidaatsleutel plaatst, en alle attributen die afhankelijk zijn van die kandidaatsleutel in de eerste relatie. In de volgende verdeelde relatie plaatsen we het attribuut dat transitieve afhankelijkheid veroorzaakt en ook de attributen die hiervan afhankelijk zijn in de tweede relatie.

Nu staan ​​de tabellen R1 en R2 in 3NF omdat er geen gedeeltelijke en transitieve afhankelijkheden meer zijn. Relatie R1 (A, B, C, D, E) heeft een kandidaatssleutel AB terwijl relatie R2 (D, E) heeft D als zijn kandidaatsleutel.

Definitie van BCNF

BCNF wordt beschouwd als de sterker dan 3NF. De relatie R in BCNF moet binnen zijn 3NF. En waar een niet-triviale functionele afhankelijkheid A -> B geldt dan in relatie R EEN moet een zijn superkey van relatie R. Zoals we weten, is Supersleutel een sleutel die een enkel kenmerk of een reeks attributen heeft die de gehele attributen van een relatie bepaalt.

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

Door de relatie R waar te nemen, kunnen we dat zeggen EEN en BF zijn kandidaatsleutels van relatie R, omdat alleen zij de waarde kunnen zoeken voor alle attributen in de relatie R. Dus A, B, F zijn de eerste attributen overwegende dat C en D zijn non-prime attributen. Er is geen transitieve afhankelijkheid waargenomen in de hierboven genoemde functionele afhankelijkheden. Daarom is de tabel R in 3NF.

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

Nu zijn de tabellen R1 en R2 in BCNF. Relatie R1 heeft twee kandidaat sleutels EEN en B, de triviale functionele afhankelijkheid van R1, d.w.z. A-> BCD en B -> ACD, geldt voor BCNF omdat A en B de supersleutels voor relatie zijn. Relatie R2 heeft D zoals het kandidaatsleutel en de functionele afhankelijkheid D -> F geldt ook voor BCNF omdat D een Super Key is.

  1. 3NF stelt dat geen niet-primair kenmerk tijdelijk afhankelijk moet zijn van de kandidaatsleutel van de relatie. Anderzijds stelt BCNF dat als er een triviale functionele afhankelijkheid bestaat X -> Y voor een relatie; dan moet X een supersleutel zijn.
  2. 3NF kan worden verkregen zonder de afhankelijkheid van relaties op te offeren. De afhankelijkheid is echter mogelijk niet behouden bij het verkrijgen van BCNF.
  3. 3NF kan worden bereikt zonder informatie uit de oude tabel te verliezen, terwijl we, terwijl we BCNF verkrijgen, wat informatie uit de oude tabel kunnen verliezen.

Gevolgtrekking:

BCNF is veel beperkter dan 3NF die helpen bij het normaliseren van de tabel. De relatie in 3NF heeft minimale resterende redundantie die verder wordt verwijderd door de BCNF.