Duomenų bazių priklausomybės yra tema, kuri dažnai klaidina tiek studentus, tiek duomenų bazių specialistus. Laimei, jie nėra tokie sudėtingi ir geriausiai iliustruojami, naudojant keletą pavyzdžių. Šiame straipsnyje aptariami bendrieji duomenų priklausomybės tipai.
Duomenų bazių priklausomybės / funkcinės priklausomybės
Duomenų bazėje priklauso priklausomybė, kai ta pati duomenų bazės lentelėje saugoma informacija vienareikšmiškai 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.
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 kaip "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 vienareikšmiškai nustatytas iš jo SSN. Tačiau atvirkštinis pareiškimas (pavadinimas -> SSN) nėra teisingas, nes daugiau nei vienas darbuotojas gali turėti tą patį pavadinimą, bet 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 yra "{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, age} -> name" yra funkcinė priklausomybė, tačiau ji nėra visiškai funkcinė priklausomybė, nes jūs galite pašalinti amžių iš kairės ataskaitos dalies 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 tarpinė 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 modelio pavadinimas, spalva ir metai, tai 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 jos teikia pagrindinius elementus, naudojamus duomenų bazių normalizavimui . Pavyzdžiui:
- Kad stalas būtų antroje įprastoje formoje (2NF) , lentelėje neturėtų būti jokio pagrindinio požymio, funkciniu požiūriu priklausomo nuo rakto kandidato pogrupyje.
- Kad stalas būtų trečioje įprastoje formoje (3NF) , kiekvienas nepriimtinis atributas turi turėti ne pereinamąją 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ų.