Skip to main content

Duomenų bazių priklausomybės supratimo vadovas

Anonim

Priklausomybė yra apribojimas, kuris taikomas arba apibrėžia atributų santykį. Tai įvyksta duomenų bazėje, kai informacija, saugoma toje pačioje duomenų bazėje, unikaliai nustato kitą tą pačią lentelę saugomą informaciją. Taip pat galite apibūdinti tai kaip santykį, kai žinant vieno atributo (arba atributų rinkinio) vertę yra pakankamai, kad pasakytų jums kito atributo (arba atributų rinkinio) vertę toje pačioje lentelėje.

Duomenų bazės priklausomybės dažnai klaidina tiek studentus, tiek duomenų bazių specialistus. Laimei, jie nėra tokie sudėtingi, kaip gali atrodyti. Jas geriausiai galima paaiškinti naudojant keletą pavyzdžių. Čia aptarsime bendrus duomenų tipų priklausomybės tipus.

Duomenų bazių priklausomybės ir funkcinės priklausomybės

Sakydamas, kad lentelėje yra priklausomybė tarp atributų, ta pati sakoma, kad tarp šių atributų yra funkcinė priklausomybė. Jei duomenų bazėje yra priklausomybė, tokia, kad atributas B priklauso nuo atributo A, tai parašyti taip:

A -> B

Pavyzdžiui, lentelėje, kurioje yra darbuotojų charakteristikos, įskaitant socialinio draudimo numerį (SSN) ir pavadinimą, galima sakyti, kad vardas priklauso nuo SSN (arba SSN -> pavadinimas), nes darbuotojo vardas gali būti unikaliai nustatytas iš SSN. Tačiau atvirkštinis pareiškimas (pavadinimas -> SSN) nėra teisingas, nes daugiau nei vienas darbuotojas gali turėti tą patį pavadinimą, bet visada turi skirtingus SSN.

Trivialios funkcinės priklausomybės

Trimatis funkcinė priklausomybė atsiranda, kai apibūdinate atributo funkcinę priklausomybę atributų rinkiniui, į kurį įtraukiamas pradinis atributas. Pavyzdžiui, {A, B} -> B yra nereikšminga funkcinė priklausomybė, kaip ir {name, SSN} -> SSN. Ši funkcinės priklausomybės rūšis vadinama nereikšminga, nes ji gali būti gauta iš sveiku protu. Akivaizdu, kad jei jau žinote B vertę, tuomet B reikšmė gali būti unikaliai nustatyta šiomis žiniomis.

Visos funkcinės priklausomybės

Visiškai funkcinė priklausomybė atsiranda tada, kai jau patenkate funkcinės priklausomybės reikalavimams, o funkcinių priklausomybių pranešimo kairėje pusėje esančių atributų rinkinys negali būti toliau mažinamas. Pavyzdžiui, {SSN, amžius} -> vardas yra funkcinė priklausomybė, tačiau ji nėra visiškai funkcinė priklausomybė, nes jūs galite pašalinti amžių iš kairės ataskaitos pusės, nepažeidžiant priklausomybės santykio.

Transitinės priklausomybės

Transitinės priklausomybės atsiranda, kai yra netiesioginis ryšys, dėl kurio atsiranda funkcinė priklausomybė. Pavyzdžiui, A -> C yra pereinamoji priklausomybė, kai ji yra tiesa tik todėl, kad A -> B ir B -> C yra tiesos.

Daugialypės priklausomybės

Daugialypės priklausomybės atsiranda tada, kai vienos ar kelių lentelės eilučių buvimas rodo, kad vienoje ar daugiau kitų eilučių yra ta pati lentelė. Pvz., Įsivaizduokite automobilių kompaniją, kuri gamina daugelį automobilių modelių, bet visada daro tiek raudoną, tiek mėlyną kiekvieno modelio spalvą. Jei turite lentelę, kurioje yra kiekvieno automobilio, kurį gamina įmonė, modelio pavadinimas, spalva ir metai, šioje lentelėje yra daugialypis priklausomumas. Jei yra tam tikro modelio pavadinimo ir metų ženklo mėlynos spalvos eilutė, taip pat turi būti panaši eilutė, atitinkanti to paties automobilio raudonąją versiją.

Priklausomybės svarba

Duomenų bazių priklausomybės yra svarbios suprasti, nes jose pateikiami pagrindiniai blokai, naudojami duomenų bazių normalizavimui, veiksmingai organizuojant duomenis duomenų bazėje. Pavyzdžiui:

  • Kad stalas būtų antroje įprastoje formoje (2NF), lentelėje neturėtų būti jokio nepakeičiamo atributo, kuris funkciniu požiūriu priklauso nuo klavišo "kandidatas" pogrupyje, atvejis.
  • Kad stalas būtų trečioje įprastoje formoje (3NF), kiekvienas nepopuliarias atributas turi turėti neperleidžiamą funkcinę priklausomybę nuo kiekvieno kandidato rakto.
  • Kad lentelė būtų Boyce-Codd normalioje formoje (BCNF), kiekviena funkcinė priklausomybė (išskyrus trivialias priklausomybes) turi būti ant superkešo.
  • Kad lentelė būtų 4-ojoje įprastoje formoje (4NF), ji neturėtų turėti daugialypių priklausomybių.