Rekomenduojama, 2024

Redaktoriaus Pasirinkimas

Skirtumas tarp 3NF ir BCNF

Normalizavimas yra metodas, pašalinantis redundanciją iš santykio, taip sumažinant įterpimo, ištrynimo ir atnaujinimo anomalijas, kurios blogina duomenų bazių veikimą. Šiame straipsnyje mes išskirsime dvi aukštesnes normalias formas, ty 3NF ir BCNF. Pagrindinis skirtumas tarp 3NF ir BCNF yra tas, kad 3NF pašalina transityvinę priklausomybę nuo santykio ir lentelės, kad būtų BCNF, trivialus funkcinis priklausomumas X-> Y santykyje turi išlaikyti, tik jei X yra super raktas.

Aptarkime skirtumus tarp 3NF ir BCNF, naudojant žemiau pateiktą palyginimo lentelę.

Palyginimo diagrama

Palyginimo pagrindas3NFBCNF
KoncepcijaJokio nepagrindinio atributo neturi būti laikinai priklausomas nuo kandidato rakto.Bet kokiai triviškajai priklausomybei santykyje R sako X-> Y, X turėtų būti super santykis R.
Priklausomybė3NF gali būti gaunama neprarandant visų priklausomybių.Priklausomybės negali būti išsaugotos BCNF.
SkilimasNuostolių skilimas gali būti pasiektas 3NF.BCNF sunku pasiekti praradimą.

3NF apibrėžimas

Lentelė arba santykis laikomas Trečiojo normalios formos tik tuo atveju, jei lentelė jau yra 2NF ir nėra jokio nepagrindinio atributo, kuris yra tranzitu priklausomas nuo santykio kandidato rakto .

Taigi, prieš sprendžiant 3NF lentelės normalizavimo procesą, leiskite aptarti kandidato raktą. Kandidato raktas yra minimalus super raktas, ty super raktas su minimaliais atributais, kurie gali apibrėžti visus santykio atributus. Taigi, normalizuodami savo lentelę, pirmiausia atpažįstate atitinkamo ryšio kandidato raktą. Atributai, kurie yra kandidato rakto dalis, yra svarbiausi atributai, o atributai, kurie nėra kandidato rakto dalis, yra ne pagrindiniai atributai .

Dabar, jei mes esame santykis R (A, B, C, D, E, F) ir mes turime šias funkcijų priklausomybes santykiui R.

Stebėdami funkcines priklausomybes galime daryti išvadą, kad AB yra kandidato raktas santykiui R, nes naudojant raktą AB galime ieškoti visų atributo vertės santykyje R. Taigi A, B tampa svarbiausiais atributais, kai jie kartu sudaro kandidato raktą. Atributai C, D, E, F tampa netinkamais atributais, nes nė vienas iš jų nėra kandidato rakto dalis.

Lentelė yra 2NF, nes jokia ne prime atributas iš dalies priklauso nuo kandidato rakto

Tačiau tarp funkcinių priklausomybių yra pastebima transitinė priklausomybė, nes atributas F nėra tiesiogiai priklausomas nuo AB kandidato. Vietoj to, atributas F yra pernelyg priklausomas nuo kandidato rakto AB per atributą D. Iki atributo D turi tam tikrą vertę, kurią galime pasiekti, kad atributą F būtų galima atpažinti iš AB kandidato. Jei atributo D reikšmė yra NULL, mes niekada negalime rasti / ieškoti F vertės, naudojant kandidato raktą AB. Tai yra priežastis, kodėl 3NF reikalauja pašalinti transityvinę priklausomybę nuo santykių.

Taigi, norint pašalinti šią transityvinę priklausomybę, turime suskirstyti santykį R. Skirstant santykį visada nurodykite kandidato raktą ir visus atributus, kurie priklauso nuo to kandidato rakto pirmame santykyje. Kitame suskirstytame santykyje antrajame santykyje dedame atributą, kuris sukelia transitinę priklausomybę, ir atributus, kurie priklauso nuo jo.

Dabar lentelės R1 ir R2 yra 3NF, nes neturi jokių dalinių ir tranzitinių priklausomybių. Ryšys R1 (A, B, C, D, E) turi kandidato raktą AB, o santykis R2 (D, E) turi savo kandidato raktą D.

BCNF apibrėžimas

BCNF yra laikomas stipresniu nei 3NF. Ryšys R, esantis BCNF, turi būti 3NF . Ir kur nesvarbi funkcinė priklausomybė A -> B turi santykį R, tada A turi būti santykinio R. superkažas . Kaip žinome, „Super“ raktas yra raktas, turintis vieną atributą arba atributų rinkinį, kuris nustato visą santykio atributai.

Dabar pereikime prie pavyzdžio, kad geriau suprastume BCNF. Tarkime, mes turime santykį R (A, B, C, D, F), kurie turi šias funkcines priklausomybes.

Stebėdami santykį R, galime pasakyti, kad A ir BF yra kandidato R santykio raktai, nes jie gali ieškoti visų atributų vertės santykyje R. Taigi A, B, F yra pagrindiniai atributai, o C ir D yra ne pagrindiniai atributai. Pirmiau minėtose funkcinėse priklausomybėse nėra pastebėta jokios transitinės priklausomybės. Taigi R lentelė yra 3NF.

Tačiau viena funkcinė priklausomybė, ty D -> F, pažeidžia BCNF apibrėžimą, pagal kurį, jei egzistuoja D -> F, D turėtų būti super raktas, kuris čia nėra. Taigi mes padalinsime santykį R.

Dabar lentelės R1 nd R2 yra BCNF. Ryšys R1 turi du kandidatų raktus A ir B, trivialinę R1 funkcijų priklausomybę, ty A-> BCD ir B -> ACD, laikykite BCNF, nes A ir B yra super raktai santykiams. Ryšys R2 turi D kaip savo kandidato raktą ir funkcinė priklausomybė D -> F taip pat turi BCNF, nes D yra Super Key.

Pagrindiniai skirtumai tarp 3NF ir BCNF

  1. 3NF teigia, kad nė vienas ne prime atributas turi būti laikinai priklausomas nuo santykio kandidato rakto. Kita vertus, BCNF teigia, kad jei trivialus funkcinė priklausomybė X -> Y egzistuoja santykiui; tada X turi būti super raktas.
  2. 3NF gali būti gaunamas neprarandant priklausomybės nuo santykio. Tačiau priklausomybė negali būti išsaugota gaunant BCNF.
  3. 3NF gali būti pasiektas neprarandant jokios informacijos iš senojo stalo, o, kol gaunant BCNF, galime prarasti tam tikrą informaciją iš senojo stalo.

Išvada:

BCNF yra daug griežtesnis nei 3NF, kuris padeda normalizuoti lentelę. Ryšys 3NF turi minimalų atleidimą iš kairiojo, kurį toliau pašalina BCNF.

Top