Boyce-Codd normal form

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 20 april 2019; kontroller kräver 7 redigeringar .

Boyce -Codd normalform (förkortad som BCNF från engelska.  Boyce-Codd normalform ) är en av de möjliga normala formerna av ett förhållande i en relationsdatamodell .

Ibland kallas Boyce-Codds normalform stark tredje normalform eftersom den är starkare (strängare) i alla avseenden jämfört med den tidigare definierade 3NF [1] .

Uppkallad efter Ray Boyce och Edgar Codd , även om Christopher Date påpekar att faktiskt en strikt definition av "tredje" normalform, motsvarande den för Boyce-Codds normalform, först gavs av Ian Heath 1971 ,  så denna form borde vara kallad "Heaths normala form" [1] .

Definition

En relationsvariabel finns i BCNF om och endast om var och en av dess icke-triviala och vänster-irreducerbara funktionella beroenden har någon potentiell nyckel som sin determinant [1] .

Mindre formellt är en relationsvariabel i Boyce-Codds normalform om och endast om determinanterna för alla dess funktionella beroenden är kandidatnycklar.

För att definiera BCNF bör man förstå begreppet funktionellt beroende av relationsattribut.

Låt R vara en relationsvariabel och X och Y  vara godtyckliga delmängder av uppsättningen attribut för relationsvariabeln R . Y är funktionellt beroende av X om och endast om, för något giltigt värde av relationsvariabeln R , om två tuplar av relationsvariabeln R matchar värdet av X , de också matchar i värdet av Y . Delmängden X kallas determinanten och Y  är den beroende delen .

Ett funktionellt beroende är trivialt om och endast om dess högra (beroende) sida är en delmängd av dess vänstra sida (determinant).

Ett funktionellt beroende sägs lämnas irreducerbart om inget attribut kan utelämnas från dess determinant utan att bryta mot beroendet (med andra ord, determinanten är irredundant).

Situationen där relationen kommer att vara i 3NF men inte i BCNF uppstår till exempel om relationen har två (eller flera) kandidatnycklar som är sammansatta, och det finns ett funktionellt beroende mellan de individuella attributen för sådana nycklar. Eftersom det beskrivna beroendet inte är transitivt faller en sådan situation inte under definitionen av 3NF. I praktiken är sådana relationer ganska sällsynta, för alla andra relationer är 3NF och BCNF likvärdiga.

Exempel

Anta att vi betraktar en relation som representerar data om tennisbanor för dagen:

Domstolsreservationer
Domstolsnummer Starttid Sluttid Betygsätta
ett 09:30 10:30 "Plats 1 för klubbmedlemmar"
ett 11:00 12:00 "Plats 1 för klubbmedlemmar"
ett 14:00 15:30 "Domstol 1 för icke-klubbmedlemmar"
2 10:00 11:30 "Court 2 för icke-klubbmedlemmar"
2 11:30 13:30 "Court 2 för icke-klubbmedlemmar"
2 15:00 16:30 "Court 2 för klubbmedlemmar"

Således är följande sammansatta potentiella nycklar möjliga: { Domstolsnummer , Starttid }, { Domstolsnummer , Sluttid }, { Tariff , Starttid }, { Tariff , Sluttid }.

Relationen är i andra ( 2NF ) och tredje ( 3NF ) normalform. Kraven för den andra normalformen är uppfyllda, eftersom alla attribut är inkluderade i en av de potentiella nycklarna och det inte finns några icke-nyckelattribut i relationen. Det finns inte heller några transitiva beroenden, vilket uppfyller kraven för den tredje normalformen. Det finns dock ett funktionellt beroende Tariff  →  Domstolsnummer där den vänstra sidan (determinant) inte är en potentiell nyckel av relationen, dvs relationen är inte i Boyce-Codd normalform .

Nackdelen med denna struktur är att det till exempel är möjligt att felaktigt tillskriva "Court 1 Members"-kursen till bokningen av den andra domstolen, även om den bara kan gälla den första domstolen.

Du kan förbättra strukturen genom att dela upp relationen i två, erhålla relationer som uppfyller BCNF (attribut som ingår i primärnyckeln är understrukna). För större tydlighet har attributet För klubbmedlemmar lagts till i information om tariffer :

Tariffer
Betygsätta Domstolsnummer För klubbmedlemmar
"Plats 1 för klubbmedlemmar" ett Ja
"Domstol 1 för icke-klubbmedlemmar" ett Inte
"Court 2 för klubbmedlemmar" 2 Ja
"Court 2 för icke-klubbmedlemmar" 2 Inte
Bokningar
Betygsätta Starttid Sluttid
"Plats 1 för klubbmedlemmar" 09:30 10:30
"Plats 1 för klubbmedlemmar" 11:00 12:00
"Domstol 1 för icke-klubbmedlemmar" 14:00 15:30
"Court 2 för icke-klubbmedlemmar" 10:00 11:30
"Court 2 för icke-klubbmedlemmar" 11:30 13:00
"Court 2 för klubbmedlemmar" 15:00 16:30

Anteckningar

  1. 1 2 3 Datum K. J. Introduktion till databassystem. - 8:e uppl. - M .: "Williams", 2006

Litteratur

ryska

Överförbar

utländsk