Tietokannan riippuvuudet ovat aihe, joka usein sekoittaa sekä opiskelijat että tietokannan ammattilaiset. Onneksi he eivät ole niin monimutkaisia ja niitä voidaan parhaiten havainnollistaa käyttämällä useita esimerkkejä. Tässä artikkelissa tarkastelemme yhteisiä tietokannan riippuvuustyyppejä.
Tietokannan riippuvuudet / toiminnalliset riippuvuudet
Tietokannassa esiintyy riippuvuus, kun samaan tietokantapöytään tallennetut tiedot määrittävät yksiselitteisesti samaan taulukkoon tallennetut muut tiedot. Voit myös kuvata tätä suhteeksi, jossa yhden attribuutin (tai attribuuttien joukon) tunteminen riittää kertomaan toisen attribuutin (tai attribuuttien sarjan) arvon samassa taulukossa.
Sanomalla, että taulukon attribuuttien välillä on riippuvuus, on sama kuin sanomalla, että näiden attribuuttien välillä on funktionaalinen riippuvuus. Jos tietokannassa on riippuvuus, että attribuutti B riippuu attribuuttia A, kirjoittaisit sen nimellä "A -> B".
Esimerkiksi taulukossa, jossa luetellaan työntekijän ominaisuudet, mukaan lukien sosiaaliturvatunnus (SSN) ja nimi, voidaan sanoa, että nimi riippuu SSN: stä (tai SSN: stä), koska työntekijän nimi voidaan määrittää yksitellen SSN: stä. Päinvastainen lausunto (nimi -> SSN) ei kuitenkaan ole tosi, koska useammalla kuin yhdellä työntekijällä voi olla sama nimi, mutta eri SSN: t.
Trivial Functional Dependencies
Triviaali funktionaalinen riippuvuus ilmenee, kun kuvaat funktionaalisen riippuvuuden attribuutista alkuperäisen attribuutin sisältävien attribuuttien kokoelmaan. Esimerkiksi "{A, B} -> B" on triviaali funktionaalinen riippuvuus, kuten "{nimi, SSN} -> SSN". Tällaista toiminnallista riippuvuutta kutsutaan triviaaliksi, koska se voidaan johtaa järjiltään. On selvää, että jos tiedät jo B: n arvon, B: n arvo voidaan määritellä yksiselitteisesti kyseisen tiedon perusteella.
Täysin toiminnalliset riippuvuudet
Täydellinen toiminnallinen riippuvuus ilmenee, kun olet jo täyttänyt funktionaalisen riippuvuuden vaatimukset ja funktionaalisen riippuvuuden lausunnon vasemmalla puolella olevia attribuuttiarvoja ei voida enää pienentää. Esimerkiksi "{SSN, age} -> nimi" on funktionaalinen riippuvuus, mutta se ei ole täysin toimiva riippuvuus, koska voit poistaa ikä lausekkeen vasemmalta puolelta vaikuttamatta riippuvuussuhteeseen.
Transitiiviset riippuvuudet
Transitiiviset riippuvuudet esiintyvät silloin, kun epäsuora suhde aiheuttaa funktionaalisen riippuvuuden. Esimerkiksi "A -> C" on transitiivinen riippuvuus, kun se on totta vain siksi, että molemmat "A-> B" ja "B-> C" ovat totta.
Monimuotoiset riippuvuudet
Monimuotoisia riippuvuuksia esiintyy, kun taulukon yhden tai useamman rivin läsnäolo merkitsee yhden tai useamman rivin esiintymistä samassa taulukossa. Kuvittele esimerkiksi autoyritys, joka valmistaa monia autonmalleja, mutta tekee aina sekä punaisen että sinisen värin jokaisesta mallista. Jos sinulla on taulukko, joka sisältää valmistajan mallin nimen, värin ja vuoden, kyseisessä taulukossa on moniarvoinen riippuvuus . Jos tietty mallin nimi ja vuosi on rivillä, on myös oltava samanlainen rivi, joka vastaa saman auton punaista versiota.
Riippuvuuksien merkitys
Tietokannan riippuvuudet ovat tärkeitä ymmärtää, koska ne tarjoavat tietokannan normalisoinnissa käytettävät perusrakenteet. Esimerkiksi:
- Jotta taulukko olisi toisessa normaalimuodossa (2NF) , taulukossa ei saa olla mitään ei-prime-määritettä, joka on toiminnallisesti riippuvainen ehdokasavainosan osajoukosta.
- Jotta taulukko olisi kolmannessa normaalimuodossa (3NF) , jokaisella ei-prime-attribuutilla täytyy olla ei-transitiivinen funktionaalinen riippuvuus jokaisesta ehdokasavaimesta.
- Jotta taulukko olisi Boyce-Codd-normaalimuodossa (BCNF) , jokainen funktionaalinen riippuvuus (muut kuin vähäiset riippuvuudet) on oltava superkey-ohjelmassa .
- Jotta taulukko olisi neljäs normaalimuoto (4NF) , sillä ei saa olla moniarvoisia riippuvuuksia.