logo

Boyce-Codd normalioji forma (BCNF)

Būtina sąlyga: Pirmoji normali forma , Antroji normali forma , Trečioji normali forma

Taikant bendruosius 2NF ir 3NF apibrėžimus, gali būti nustatytas papildomas perteklius, kurį sukelia priklausomybės, kurios pažeidžia vieną ar daugiau kandidatų raktų. Tačiau, nepaisant šių papildomų apribojimų, vis tiek gali egzistuoti priklausomybės, dėl kurių 3NF ryšiuose atsiras perteklius. Dėl šio 3NF silpnumo atsirado stipresnė normali forma, vadinama į Boyce-Codd normali forma (Codd, 1974) .



Nors 3NF yra tinkama normalioji forma reliacinėms duomenų bazėms, vis dėlto ši (3NF) normali forma gali nepašalinti 100% pertekliaus dėl X−>Y funkcinės priklausomybės, jei X nėra nurodyto ryšio raktas. Tai gali būti išspręsta naudojant Boyce-Codd normalią formą (BCNF).

Boyce-Codd normalioji forma (BCNF)

Boyce–Codd normalioji forma (BCNF) yra pagrįsta funkcinėmis priklausomybėmis, kurios atsižvelgia į visus galimus ryšio raktus; tačiau BCNF taip pat turi papildomų apribojimų, palyginti su bendruoju 3NF apibrėžimu.

BCNF taisyklės

1 taisyklė: Lentelė turi būti 3-iosios normalios formos.



2 taisyklė: X turėtų būti kiekvienos funkcinės priklausomybės (FD) X−>Y superraktas duotame santykyje.

Pastaba: Norėdami patikrinti, ar ryšys yra BCNF, nustatome visus determinantus ir įsitikiname, kad jie yra kandidatiniai raktai.

BCNF DBVS



Jūs susidūrėte su panašia hierarchija, žinoma kaip Chomsky normalioji forma skaičiavimo teorijoje. Dabar atidžiai išstudijuokite aukščiau pateiktą hierarchiją. Galima daryti išvadą, kad kiekvienas BCNF santykis yra ir 3NF . Kitaip tariant, ryšys 3NF neturi būti BCNF. Kurį laiką apmąstykite šį teiginį.

Norint nustatyti aukščiausią normaliąją tam tikro ryšio R formą su funkcinėmis priklausomybėmis, pirmiausia reikia patikrinti, ar galioja BCNF sąlyga. Jei nustatoma, kad R yra BCNF, galima drąsiai daryti išvadą, kad ryšys taip pat yra 3NF , 2NF, ir 1NF kaip rodo hierarchija. 1NF turi mažiausiai ribojančių apribojimų – jam reikia tik santykio R, kad kiekvienoje kortelėje būtų atominės reikšmės. 2NF turi šiek tiek griežtesnį apribojimą.

3NF yra labiau ribojantis nei pirmosios dvi normalios formos, bet yra mažiau ribojantis nei BCNF. Tokiu būdu apribojimas didėja, kai keliaujame hierarchija žemyn.

Pavyzdžiai

Čia aptarsime keletą pagrindinių pavyzdžių, kurie leis suprasti BCNF savybes. Čia aptarsime kelis pavyzdžius.

1 pavyzdys

Panagrinėkime studentų duomenų bazę, kurioje minimi studento duomenys.

This_ID This_Branch Stu_Kursas Filialo_numeris Stu_Kurso_Nr
101 Kompiuterių mokslas ir inžinerija DBVS B_001 201
101 Kompiuterių mokslas ir inžinerija Kompiuterių tinklai B_001 202
102 Elektronikos ir ryšių inžinerija VLSI technologija B_003 401
102 Elektronikos ir ryšių inžinerija Mobilusis ryšys B_003 402

Pirmiau minėtų dalykų funkcinė priklausomybė yra tokia:

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

Aukščiau pateiktos lentelės kandidatų raktai yra šie: {This_ID, This_Course}

Kodėl šios lentelės nėra BCNF?

Aukščiau pateikta lentelė nėra BCNF, nes, kaip matome, nei Stu_ID, nei Stu_Course nėra Super Key. Kadangi aukščiau paminėtos taisyklės aiškiai nurodo, kad norint, kad lentelė būtų BCNF, ji turi vadovautis savybe, kad funkcinei priklausomybei X−>Y, X turi būti super rakte ir čia ši savybė sugenda, todėl šios lentelės nėra BCNF. .

Kaip patenkinti BCNF?

Norėdami patenkinti šią lentelę BCNF, turime ją išskaidyti į kitas lenteles. Čia yra visa procedūra, kurios metu šią lentelę paverčiame BCNF. Pirmiausia padalykime šią pagrindinę lentelę į dvi lenteles This_Branch ir Stu_Kursas Lentelė.

Stu_Branch lentelė

This_ID This_Branch
101 Kompiuterių mokslas ir inžinerija
102 Elektronikos ir ryšių inžinerija

Šios lentelės kandidato raktas: This_ID .

kaip konvertuoti eilutę į char

Stu_kursų lentelė

Stu_Kursas Filialo_numeris Stu_Kurso_Nr
DBVS B_001 201
Kompiuterių tinklai B_001 202
VLSI technologija B_003 401
Mobilusis ryšys B_003 402

Šios lentelės kandidato raktas: Stu_Kursas .

Stu_ID į Stu_Course_No Table

This_ID Stu_Kurso_Nr
101 201
101 202
102 401
102 402

Šios lentelės kandidato raktas: {Stu_ID, Stu_Course_No}.

Išskaidžius į tolimesnes lenteles, dabar BCNF, perduodant Super Key sąlygą, funkcinėje priklausomybėje X−>Y X yra Super raktas.

2 pavyzdys

Raskite aukščiausią normaliąją santykio formą R(A, B, C, D, E), kai FD nustatyta kaip:

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

Paaiškinimas:

  • 1 žingsnis: Kaip matome, (AC)+ ={A, C, B, E, D}, bet nė vienas jo poaibis negali nustatyti visų ryšio atributų, todėl AC bus kandidatas. A arba C negali būti gaunami iš jokio kito ryšio atributo, todėl bus tik 1 kandidatas raktas {AC}.
  • 2 žingsnis: Pirminiai atributai yra tie atributai, kurie šiame pavyzdyje yra kandidato rakto {A, C} dalis, o kiti šiame pavyzdyje bus ne pirminiai {B, D, E}.
  • 3 veiksmas: Ryšys R yra pirmosios normalios formos, nes reliacinė DBVS neleidžia naudoti daugiareikšmių ar sudėtinių atributų.

Ryšys yra 2-os normalios formos, nes BC->D yra 2-osios normaliosios formos (BC nėra tinkamas kandidato rakto AC poaibis), o AC->BE yra 2-osios normaliosios formos (AC yra kandidatas raktas) ir B->E yra 2-osios normalios formos (B nėra tinkamas kandidato rakto AC poaibis).

Santykis yra ne 3-ioje normalioje formoje, nes BC->D (nei BC yra superraktas, nei D nėra pirminis atributas) ir B->E (nei B yra superraktas, nei E nėra pirminis atributas), bet tenkina 3-ąjį normalųjį , FD LHS turėtų būti super raktas arba RHS turėtų būti pagrindinis atributas. Taigi aukščiausia normalioji santykio forma bus 2-oji normalioji forma.

Pastaba: Pagrindinis atributas negali būti tranzityviai priklausomas nuo BCNF santykio rakto.

Apsvarstykite šias kai kurių santykių R funkcines priklausomybes

BC, B -> A>

A ir B yra super raktai, todėl aukščiau pateiktas ryšys yra BCNF.

Pastaba: BCNF skilimas visada gali būti neįmanomas esant be nuostolių sujungimo sąlygai. Pavyzdžiui, santykis R (V, W, X, Y, Z) su funkcinėmis priklausomybėmis: