logo

Boyce-Codd normal form (BCNF)

Nödvändig förutsättning: Första normala formen , Andra normalformen , Tredje normalformen

Tillämpning av de allmänna definitionerna av 2NF och 3NF kan identifiera ytterligare redundans orsakad av beroenden som bryter mot en eller flera kandidatnycklar. Men trots dessa ytterligare begränsningar kan beroenden fortfarande existera som gör att redundans finns i 3NF-relationer. Denna svaghet i 3NF resulterade i presentationen av en starkare normal form som kallas de Boyce-Codd normal form (Codd, 1974) .



Även om 3NF är en adekvat normal form för relationsdatabaser, kanske denna (3NF) normala form inte tar bort 100 % redundans på grund av X−>Y funktionellt beroende om X inte är en kandidatnyckel för den givna relationen. Detta kan lösas med Boyce-Codd Normal Form (BCNF).

Boyce-Codd normal form (BCNF)

Boyce–Codd Normal Form (BCNF) är baserad på funktionella beroenden som tar hänsyn till alla kandidatnycklar i en relation; emellertid har BCNF också ytterligare begränsningar jämfört med den allmänna definitionen av 3NF.

Regler för BCNF

Regel 1: Tabellen ska vara i 3:e normalformen.



Regel 2: X ska vara en supernyckel för varje funktionellt beroende (FD) X−>Y i en given relation.

Notera: För att testa om en relation finns i BCNF, identifierar vi alla determinanter och ser till att de är kandidatnycklar.

BCNF i DBMS



Du stötte på en liknande hierarki som kallas Chomsky Normal Form i teorin om beräkning. Studera nu hierarkin ovan noggrant. Det kan man sluta sig till varje relation i BCNF finns också i 3NF . För att uttrycka det på ett annat sätt, en relation i 3NF behöver inte vara i BCNF. Fundera över detta uttalande ett tag.

För att bestämma den högsta normala formen av en given relation R med funktionella beroenden är det första steget att kontrollera om BCNF-villkoret håller. Om R befinns vara i BCNF, kan man säkert sluta sig till att relationen också finns i 3NF , 2NF, och 1NF som hierarkin visar. 1NF har den minst restriktiva begränsningen - den kräver bara en relation R för att ha atomvärden i varje tupel. 2NF har en något mer restriktiv begränsning.

3NF har en mer restriktiv begränsning än de två första normala formerna men är mindre restriktiv än BCNF. På detta sätt ökar begränsningen när vi går ner i hierarkin.

Exempel

Här kommer vi att diskutera några grundläggande exempel som låter dig förstå egenskaperna hos BCNF. Vi kommer att diskutera flera exempel här.

Exempel 1

Låt oss överväga elevdatabasen, i vilken data om studenten nämns.

Detta_ID Denna_gren Stu_Course Branch_Number Stu_Course_No
101 Datavetenskap och teknik DBMS B_001 201
101 Datavetenskap och teknik Dator nätverk B_001 202
102 Elektronik & kommunikationsteknik VLSI-teknik B_003 401
102 Elektronik & kommunikationsteknik Mobil kommunikation B_003 402

Funktionellt beroende av ovanstående är som nämnts:

Stu_ID −>Stu_Branch Stu_Course −> {Branch_Number, Stu_Course_No}>

Kandidatnycklar i tabellen ovan är: {This_ID, This_Course}

Varför finns den här tabellen inte i BCNF?

Tabellen ovan är inte i BCNF, eftersom som vi kan se att varken Stu_ID eller Stu_Course är en supernyckel. Eftersom reglerna som nämns ovan tydligt säger att för att en tabell ska vara i BCNF måste den följa egenskapen att för funktionellt beroende X−>Y måste X vara i Super Key och här misslyckas denna egenskap, det är därför denna tabell inte är i BCNF .

Hur tillfredsställer man BCNF?

För att uppfylla denna tabell i BCNF måste vi bryta ner den i ytterligare tabeller. Här är den fullständiga proceduren genom vilken vi omvandlar denna tabell till BCNF. Låt oss först dela upp denna huvudtabell i två tabeller Denna_gren och Stu_Course Tabell.

Stu_Branch Table

Detta_ID Denna_gren
101 Datavetenskap och teknik
102 Elektronik & kommunikationsteknik

Kandidatnyckel för denna tabell: Detta_ID .

hur man öppnar en fil med java

Stu_Course Tabell

Stu_Course Branch_Number Stu_Course_No
DBMS B_001 201
Dator nätverk B_001 202
VLSI-teknik B_003 401
Mobil kommunikation B_003 402

Kandidatnyckel för denna tabell: Stu_Course .

Stu_ID till Stu_Course_No Tabell

Detta_ID Stu_Course_No
101 201
101 202
102 401
102 402

Kandidatnyckel för denna tabell: {Stu_ID, Stu_Course_No}.

Efter att ha sönderdelats i ytterligare tabeller, är det nu i BCNF, eftersom det passerar villkoret för Super Key, att i funktionellt beroende X−>Y, är X en Supernyckel.

Exempel 2

Hitta den högsta normalformen av en relation R(A, B, C, D, E) med FD satt som:

{ BC->D, AC->BE, B->E }>

Förklaring:

  • Steg 1: Som vi kan se, (AC)+ ={A, C, B, E, D} men ingen av dess delmängder kan bestämma alla attribut för relationen, så AC kommer att vara kandidatnyckeln. A eller C kan inte härledas från något annat attribut i relationen, så det kommer bara att finnas en kandidatnyckel {AC}.
  • Steg 2: Primära attribut är de attribut som är en del av kandidatnyckeln {A, C} i detta exempel och andra kommer att vara icke-primära {B, D, E} i det här exemplet.
  • Steg 3: Relationen R är i 1:a normalform eftersom ett relationellt DBMS inte tillåter flervärdiga eller sammansatta attribut.

Relationen är i 2:a normalform eftersom BC->D är i 2:a normalform (BC är inte en riktig delmängd av kandidatnyckel AC) och AC->BE är i 2:a normalform (AC är kandidatnyckel) och B->E är i 2:a normalform (B är inte en riktig delmängd av kandidatnyckel AC).

Relationen är inte i 3:e normalform eftersom i BC->D (varken BC är en supernyckel eller D är ett primattribut) och i B->E (varken B är en supernyckel eller E är ett primattribut) utan för att tillfredsställa 3:e normalen för , antingen LHS för en FD ska vara supernyckel eller RHS ska vara ett primärt attribut. Så den högsta normala formen av relation kommer att vara den 2:a normalformen.

Notera: Ett primattribut kan inte vara transitivt beroende av en nyckel i BCNF-relationen.

Betrakta dessa funktionella beroenden av någon relation R

AB ->C C ->B AB ->B>

Antag att det är känt att den enda kandidatnyckeln för R är AB. En noggrann observation krävs för att dra slutsatsen att ovanstående beroende är ett Transitivt beroende eftersom det primära attributet B transitivt beror på nyckeln AB till C. Nu är den första och den tredje FD i BCNF eftersom de båda innehåller kandidatnyckeln (eller helt enkelt KEY) på deras vänstra sida. Det andra beroendet är dock inte i BCNF utan är definitivt i 3NF på grund av närvaron av det primära attributet på höger sida. Så den högsta normala formen av R är 3NF eftersom alla tre FDs uppfyller de nödvändiga villkoren för att vara i 3NF.

Exempel 3

Tänk till exempel på relation R(A, B, C)

A ->BC, B -> A>

A och B är båda supernycklar så ovanstående relation är i BCNF.

Notera: BCNF-sönderdelning kanske inte alltid är möjlig med förlustfri sammanfogning. Till exempel, relation R (V, W, X, Y, Z), med funktionella beroenden:

V, W ->X Y, Z -> X W -> Y>

Det skulle inte tillfredsställa beroendebevarande bevarande av BCNF-nedbrytning.

Notera: Redundanser är ibland fortfarande närvarande i en BCNF-relation eftersom det inte alltid är möjligt att eliminera dem helt.

Det finns också några normala former av högre ordning, som den 4:e normalformen och den 5:e normalformen.

För mer, se 4:e och 5:e normalformerna.