Daugiavertė priklausomybė duomenų bazėse

Turinys:

Daugiavertė priklausomybė duomenų bazėse
Daugiavertė priklausomybė duomenų bazėse
Anonim

Reliacinėje duomenų bazėje priklausomybė atsiranda, kai toje pačioje duomenų bazės lentelėje saugoma informacija vienareikšmiškai nustato kitą toje pačioje lentelėje saugomą informaciją. Daugiareikšmė priklausomybė atsiranda, kai vienoje ar daugiau lentelės eilučių reiškia, kad toje pačioje lentelėje yra dar viena ar daugiau eilučių. Kitaip tariant, du lentelės atributai (arba stulpeliai) nepriklauso vienas nuo kito, bet abu priklauso nuo trečiojo atributo.

Image
Image

Daugiareikšmė priklausomybė užkerta kelią normalizavimo standartinei ketvirtajai normaliajai formai. Reliacinės duomenų bazės atitinka penkias įprastas formas, kurios atspindi įrašų projektavimo gaires. Jie apsaugo nuo atnaujinimo anomalijų ir duomenų neatitikimų. Ketvirtoji normalioji forma nagrinėja ryšius „daug su vienu“duomenų bazėje.

Funkcinė priklausomybė prieš daugiareikšmę priklausomybę

Norint suprasti daugiareikšmę priklausomybę, naudinga dar kartą peržiūrėti, kas yra funkcinė priklausomybė.

Jei atributas X vienareikšmiškai apibrėžia atributą Y, tai Y funkciškai priklauso nuo X. Tai parašyta kaip X -> Y. Pavyzdžiui, toliau esančioje Studentų lentelėje Studento_pavadinimas nustato pagrindą:

Studento_vardas Pagrindinis
Ravi Meno istorija
Beta Chemija

Šią funkcinę priklausomybę galima parašyti: Studento_pavadinimas -> Pagrindinis. Kiekvienas studento_vardas nustato tiksliai vieną pagrindą ir ne daugiau.

Jei norite, kad duomenų bazėje taip pat būtų stebimos sporto šakos, kuriomis užsiima šie studentai, galbūt paprasčiausias būdas tai padaryti – tiesiog pridėti kitą stulpelį pavadinimu Sportas:

Studento_vardas Pagrindinis Sportas
Ravi Meno istorija Futbolas
Ravi Meno istorija Tinklinis
Ravi Meno istorija Tenisas
Beta Chemija Tenisas
Beta Chemija Futbolas

Bėda ta, kad Ravi ir Beth sportuoja keletą kartų. Kiekvienai papildomai sporto šakai būtina pridėti naują eilutę.

Ši lentelė įvedė daugiareikšmę priklausomybę, nes pagrindinė ir sporto šaka nepriklauso viena nuo kitos, tačiau abi priklauso nuo studento. Tai paprastas pavyzdys ir lengvai atpažįstamas, tačiau daugiareikšmė priklausomybė gali tapti problema didelėje, sudėtingoje duomenų bazėje.

Daugiareikšmė priklausomybė parašyta X ->-> Y. Šiuo atveju:

Studento_vardas ->-> Major

Studento_vardas34 > Sportas

Tai skaitoma kaip „Studento_vardas daug lemia pagrindinį dalyką“ir „Studento_vardas daug lemia sportą“.

Daugiareikšmei priklausomybei visada reikia bent trijų atributų, nes ją sudaro bent du atributai, kurie priklauso nuo trečiojo.

Daugiavertė priklausomybė ir normalizavimas

Lentelė su daugiareikšme priklausomybe pažeidžia ketvirtosios normaliosios formos normalizavimo standartą, nes sukuria nereikalingus perteklius ir gali prisidėti prie duomenų nenuoseklumo. Norint padidinti iki 4NF, šią informaciją reikia suskirstyti į dvi lenteles.

Toliau esančioje lentelėje dabar yra funkcinė Student_Name -> pagrindinė priklausomybė ir nėra daugiareikšmių priklausomybių:

Studento_vardas Pagrindinis
Ravi Meno istorija
Ravi Meno istorija
Ravi Meno istorija
Beta Chemija
Beta Chemija

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

Studento_vardas Sportas
Ravi Futbolas
Ravi Tinklinis
Ravi Tenisas
Beta Tenisas
Beta Futbolas

Normalizavimas dažnai pasiekiamas supaprastinant sudėtingas lenteles, kad jose būtų informacija, susijusi su viena idėja ar tema, o ne stengiantis, kad vienoje lentelėje būtų per daug skirtingos informacijos.

Rekomenduojamas: