Skip to main content

Daugialypė priklausomybė duomenų bazėse

Anonim

Reliacinėje duomenų bazėje priklausomybė atsiranda tada, kai toje pačioje duomenų lentelėje saugoma informacija unikaliai nustato kitą tą pačią lentelę saugomą informaciją. Daugiavertė priklausomybė atsiranda tada, kai vienos ar kelių eilučių buvimas lentelėje reiškia vienos ar kelių kitų eilučių buvimą toje pačioje lentelėje. Kitaip tariant, du lentelėje esantys požymiai (ar stulpeliai) nepriklauso vienas nuo kito, tačiau abi priklauso nuo trečiojo atributo.

Daugialypė priklausomybė užkerta kelią normalizavimo standartinei ketvirtai normaliai formai (4NF). Reliacinės duomenų bazės seka penkiomis įprastomis formomis, kuriose yra rekordų dizaino gairės. Jie užkerta kelią duomenų nenuoseklumų ir neatitikimų atnaujinimui. Ketvirta normalioji forma susijusi su daugelio vienetų santykiais duomenų bazėje.

Funkcinė priklausomybė ir daugialypė priklausomybė

Norėdami suprasti daugialypę priklausomybę, naudinga persvarstyti, kas yra funkcinė priklausomybė.

Jei atributas X unikaliai nustato atributą Y, tada Y yra funkciniu požiūriu priklausomas nuo X. Tai parašyta kaip X-> Y. Pavyzdžiui, studentų lentelėje žemiau "Student_Name" nustato "Major":

Studentai
Studento vardasMajoras
RaviMeno istorija
BethChemija

Ši funkcinė priklausomybė gali būti parašyta: Student_Name -> Major . Kiekvienas Student_Name nustato tiksliai vieną Majorą ir ne daugiau.

Jei norite, kad duomenų bazė taip pat sektų sporto šiems studentams, galite manyti, kad paprasčiausias būdas tai padaryti yra tiesiog pridėti kitą stulpelį su pavadinimu "Sportas":

Studentai
Studento vardasMajorasSportas
RaviMeno istorijaFutbolas
RaviMeno istorijaTinklinis
RaviMeno istorijaTenisas
BethChemijaTenisas
BethChemijaFutbolas

Problema yra ta, kad tiek Ravi, tiek Bet vaidina keletą sporto šakų. Reikia pridėti naują eilutę kiekvienam papildomam sportui.

Ši lentelė įvedė daugialypę priklausomybę, nes pagrindinės ir sporto sritys yra viena nuo kitos nepriklausomos, tačiau abi priklauso nuo studento.

Tai paprastas pavyzdys ir lengvai atpažįstamas, tačiau daugiapakopė priklausomybė gali tapti didelės sudėtingos duomenų bazės problema.

Įrašoma daugialypė priklausomybė X -> -> Y. Šiuo atveju:

Studento vardas ->-> MajorasStudento vardas->-> Sportas

Tai skaitoma kaip "Student_Name mulitetermines Major" ir "Student_Name multidetermines Sport".

Daugiavalioji priklausomybė visada reikalauja bent trijų atributų, nes ji susideda iš bent dviejų trečiųjų priklausomų atributų.

Daugialypė priklausomybė ir normalizavimas

Lentelė su daugybe priklausomybe pažeidžia ketvirtosios įprastos formos (4NK) normavimo normą, nes ji sukuria nereikalingus atleidimus iš darbo ir gali prisidėti prie nenuoseklių duomenų. Kad tai būtų iki 4NF, šią informaciją reikia sugriauti į dvi lenteles.

Toliau pateiktoje lentelėje yra funkcinė priklausomybė nuo Student_Name -> Major ir nėra daugialypių priklausomybių:

Studentai ir pagrindai
Studento vardasMajoras
RaviMeno istorija
RaviMeno istorija
RaviMeno istorija
BethChemija
BethChemija

Nors šioje lentelėje taip pat yra viena funkcinė Student_Name priklausomybė -> Sportas:

Studentai ir sportas
Studento vardasSportas
RaviFutbolas
RaviTinklinis
RaviTenisas
BethTenisas
BethFutbolas

Akivaizdu, kad normalizavimas dažnai sprendžiamas supaprastinant sudėtingas lenteles, kad jose būtų pateikta informacija, susijusi su viena idėja ar tema, o ne bandymas padaryti vienoje lentelėje per daug nevienodos informacijos.