logo

Boyce-Codd normal form (BCNF)

Forudsætning: Første Normalform , Anden Normalform , Tredje Normalform

Anvendelse af de generelle definitioner af 2NF og 3NF kan identificere yderligere redundans forårsaget af afhængigheder, der krænker en eller flere kandidatnøgler. På trods af disse yderligere begrænsninger kan der stadig eksistere afhængigheder, der vil forårsage redundans til at være til stede i 3NF-relationer. Denne svaghed i 3NF resulterede i præsentationen af ​​en stærkere normal form kaldet det Boyce-Codd Normal Form (Codd, 1974) .



Selvom 3NF er en passende normalform for relationelle databaser, fjerner denne (3NF) normale form muligvis ikke 100 % redundans på grund af X−>Y funktionel afhængighed, hvis X ikke er en kandidatnøgle til den givne relation. Dette kan løses ved Boyce-Codd Normal Form (BCNF).

Boyce-Codd normal form (BCNF)

Boyce–Codd Normal Form (BCNF) er baseret på funktionelle afhængigheder, der tager højde for alle kandidatnøgler i en relation; BCNF har imidlertid også yderligere begrænsninger sammenlignet med den generelle definition af 3NF.

Regler for BCNF

Regel 1: Tabellen skal være i 3. Normalform.



Regel 2: X skal være en supernøgle for hver funktionel afhængighed (FD) X−>Y i en given relation.

Bemærk: For at teste om en relation er i BCNF, identificerer vi alle determinanter og sikrer os, at de er kandidatnøgler.

BCNF i DBMS



Du stødte på et lignende hierarki kendt som Chomsky Normal Form i Beregningsteorien. Studér nu omhyggeligt hierarkiet ovenfor. Det kan man slutte sig til enhver relation i BCNF er også i 3NF . For at sige det på en anden måde, behøver en relation i 3NF ikke at være i BCNF. Tænk over denne udtalelse et stykke tid.

For at bestemme den højeste normalform af en given relation R med funktionelle afhængigheder er det første skridt at kontrollere, om BCNF-betingelsen holder. Hvis R findes at være i BCNF, kan det med sikkerhed udledes, at relationen også er i 3NF , 2NF, og 1NF som hierarkiet viser. 1NF har den mindst restriktive begrænsning - det kræver kun en relation R for at have atomværdier i hver tupel. 2NF har en lidt mere restriktiv begrænsning.

3NF har en mere restriktiv begrænsning end de første to normale former, men er mindre restriktiv end BCNF. På denne måde øges begrænsningen, når vi bevæger os ned i hierarkiet.

Eksempler

Her vil vi diskutere nogle grundlæggende eksempler, som lader dig forstå egenskaberne ved BCNF. Vi vil diskutere flere eksempler her.

Eksempel 1

Lad os overveje elevdatabasen, hvor data om eleven er nævnt.

Dette_ID Denne_gren Stu_Course Branch_Number Stu_Course_No
101 Datalogi og teknik DBMS B_001 201
101 Datalogi og teknik Computernetværk B_001 202
102 Elektronik & Kommunikationsteknik VLSI teknologi B_003 401
102 Elektronik & Kommunikationsteknik Mobil kommunikation B_003 402

Funktionel afhængighed af ovenstående er som nævnt:

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

Kandidatnøgler i ovenstående tabel er: {This_ID, This_Course}

Hvorfor er denne tabel ikke i BCNF?

Tabellen ovenfor er ikke i BCNF, for som vi kan se, er hverken Stu_ID eller Stu_Course en supernøgle. Da reglerne nævnt ovenfor tydeligt fortæller, at for at en tabel skal være i BCNF, skal den følge egenskaben, at for funktionel afhængighed X−>Y skal X være i Super Key og her fejler denne egenskab, det er derfor denne tabel ikke er i BCNF .

Hvordan tilfredsstiller man BCNF?

For at opfylde denne tabel i BCNF er vi nødt til at dekomponere den i yderligere tabeller. Her er den fulde procedure, hvorigennem vi transformerer denne tabel til BCNF. Lad os først opdele denne hovedtabel i to tabeller Denne_gren og Stu_Course Bord.

Stu_Branch Table

Dette_ID Denne_gren
101 Datalogi og teknik
102 Elektronik & Kommunikationsteknik

Kandidatnøgle til denne tabel: Dette_ID .

java8 funktioner

Stu_Course Tabel

Stu_Course Branch_Number Stu_Course_No
DBMS B_001 201
Computernetværk B_001 202
VLSI teknologi B_003 401
Mobil kommunikation B_003 402

Kandidatnøgle til denne tabel: Stu_Course .

Stu_ID til Stu_Course_No Table

Dette_ID Stu_Course_No
101 201
101 202
102 401
102 402

Kandidatnøgle til denne tabel: {Stu_ID, Stu_Course_No}.

Efter dekomponering i yderligere tabeller, er det nu i BCNF, da det passerer betingelsen for Super Key, at i funktionel afhængighed X−>Y, er X en Super nøgle.

Eksempel 2

Find den højeste normalform af en relation R(A, B, C, D, E) med FD sat som:

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

Forklaring:

  • Trin 1: Som vi kan se, (AC)+ ={A, C, B, E, D}, men ingen af ​​dens delmængder kan bestemme alle attributter af relationen, så AC vil være kandidatnøglen. A eller C kan ikke udledes af nogen anden attribut i relationen, så der vil kun være 1 kandidatnøgle {AC}.
  • Trin-2: Primære attributter er de attributter, der er en del af kandidatnøgle {A, C} i dette eksempel, og andre vil være ikke-prime {B, D, E} i dette eksempel.
  • Trin-3: Relationen R er i 1. normal form, da et relationelt DBMS ikke tillader multi-værdi eller sammensatte attributter.

Relationen er på 2. normalform, fordi BC->D er på 2. normalform (BC er ikke en korrekt delmængde af kandidatnøgle AC) og AC->BE er på 2. normalform (AC er kandidatnøgle) og B->E er i 2. normalform (B er ikke en korrekt delmængde af kandidatnøgle AC).

Forholdet er ikke i 3. normalform, fordi i BC->D (hverken BC er en supernøgle eller D er en prime-attribut) og i B->E (hverken B er en supernøgle eller E er en prime-attribut), men for at tilfredsstille 3. normal for , enten skal LHS i en FD være supernøgle, eller RHS skal være en primær attribut. Så den højeste normalform for relation vil være den 2. Normalform.

Bemærk: En prime-attribut kan ikke være transitivt afhængig af en nøgle i BCNF-relation.

Overvej disse funktionelle afhængigheder af en eller anden relation R

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

Antag, at det er kendt, at den eneste kandidatnøgle til R er AB. En omhyggelig observation er påkrævet for at konkludere, at ovenstående afhængighed er en transitiv afhængighed, da den primære attribut B transitivt afhænger af nøglen AB til C. Nu er den første og den tredje FD i BCNF, da de begge indeholder kandidatnøglen (eller blot KEY) på deres venstre side. Den anden afhængighed er imidlertid ikke i BCNF, men er bestemt i 3NF på grund af tilstedeværelsen af ​​den primære attribut på højre side. Så den højeste normale form for R er 3NF, da alle tre FD'er opfylder de nødvendige betingelser for at være i 3NF.

Eksempel 3

Overvej for eksempel relation R(A, B, C)

A ->BC, B -> A>

A og B er begge supernøgler, så ovenstående relation er i BCNF.

Bemærk: BCNF-nedbrydning er muligvis ikke altid mulig med tabsfri forbindelsestilstand. For eksempel relation R (V, W, X, Y, Z), med funktionelle afhængigheder:

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

Det ville ikke tilfredsstille afhængighed bevarende BCNF-nedbrydning.

Bemærk: Redundanser er nogle gange stadig til stede i et BCNF-forhold, da det ikke altid er muligt at eliminere dem fuldstændigt.

Der er også nogle højere-ordens normale former, som den 4. Normalform og den 5. Normalform.

For mere henvises til 4. og 5. Normalformular.