Laten we de verschillen tussen 3NF en BCNF bespreken met behulp van de onderstaande vergelijkingsgrafiek.
Vergelijkingstabel
Basis voor vergelijking | 3NF | BCNF |
---|---|---|
Concept | Geen 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. |
Afhankelijkheid | 3NF kan worden verkregen zonder alle afhankelijkheden op te offeren. | Afhankelijkheden mogen niet worden bewaard in BCNF. |
Ontleding | Lossless-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.
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.
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.
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.
Belangrijkste verschillen tussen 3NF en BCNF
- 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.
- 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.
- 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.