Riippuvuus on rajoitus, joka koskee attribuutteja tai määrittää niiden välisen suhteen. Se tapahtuu tietokannassa, kun samaan tietokantataulukkoon tallennetut tiedot määrittelevät yksiselitteisesti muut samaan taulukkoon tallennetut tiedot. Voit kuvata tätä myös suhteeksi, jossa yhden attribuutin (tai attribuuttijoukon) arvon tietäminen riittää kertomaan toisen attribuutin (tai attribuuttijoukon) arvon samassa taulukossa. Tietokantariippuvuudet hämmentävät usein sekä opiskelijat että tietokanta-ammattilaiset. Onneksi ne eivät ole niin monimutkaisia kuin miltä näyttää. Ne selitetään parhaiten muutamalla esimerkillä. Tässä tutkimme yleisiä tietokantariippuvuustyyppejä.
Tietokantariippuvuudet ja toiminnalliset riippuvuudet
Sanoa, että taulukon attribuuttien välillä on riippuvuus, on sama kuin sanoisi, että näiden attribuuttien välillä on toiminnallinen riippuvuus. Jos tietokannassa on riippuvuus siten, että attribuutti B riippuu attribuutista A, kirjoitat tämän seuraavasti: A -> B
Esimerkiksi työntekijän attribuuttien taulukossa, mukaan lukien sosiaaliturvatunnus (BSN) ja nimi, nimen voidaan sanoa riippuvan kansalaispalvelunumerosta (tai sosiaaliturvatunnuksesta -> nimi), koska työntekijän nimi voidaan määrittää yksilöllisesti sosiaaliturvatunnus. Käänteinen lause (nimi -> SSN) ei kuitenkaan pidä paikkaansa, koska useammalla kuin yhdellä työntekijällä voi olla sama nimi, mutta aina eri SSN-tunnukset.
Triviaaliset toiminnalliset riippuvuudet
Triviaali toiminnallinen riippuvuus ilmenee, kun kuvaat määritteen toiminnallista riippuvuutta attribuuttikokoelmasta, joka sisältää alkuperäisen määritteen. Esimerkiksi {A, B} -> B on triviaali toiminnallinen riippuvuus, kuten myös {nimi, SSN} -> SSN. Tämän tyyppistä toiminnallista riippuvuutta kutsutaan triviaaliksi, koska se voidaan päätellä terveestä järjestä. On selvää, että jos tiedät jo B:n arvon, B:n arvo voidaan määrittää yksiselitteisesti tämän tiedon perusteella.
Täydelliset toiminnalliset riippuvuudet
Täysi toiminnallinen riippuvuus syntyy, kun täytät jo toiminnallisen riippuvuuden vaatimukset ja funktionaalisen riippuvuuden käskyn vasemmalla puolella olevaa attribuuttijoukkoa ei voida enää pienentää. Esimerkiksi {SSN, ikä} -> nimi on toiminnallinen riippuvuus, mutta se ei ole täysi toiminnallinen riippuvuus, koska voit poistaa iän lauseen vasemmalta puolelta vaikuttamatta riippuvuussuhteeseen.
Transitiiviset riippuvuudet
Transitiivisia riippuvuuksia esiintyy, kun on epäsuora suhde, joka aiheuttaa toiminnallisen riippuvuuden. Esimerkiksi A -> C on transitiivinen riippuvuus, kun se on tosi vain koska sekä A -> B että B -> C ovat tosi.
Moniarvoiset riippuvuudet
Moniarvoisia riippuvuuksia esiintyy, kun yhden tai useamman rivin läsnäolo taulukossa tarkoittaa yhden tai useamman muun rivin läsnäoloa samassa taulukossa. Kuvittele esimerkiksi autoyhtiötä, joka valmistaa useita automalleja, mutta tekee jokaisesta mallista aina sekä punaisen että sinisen värin. Jos sinulla on taulukko, jossa on jokaisen yrityksen valmistaman auton mallinimi, väri ja vuosimalli, taulukossa on moniarvoinen riippuvuus. Jos tietylle mallille ja vuodelle on rivi sinisellä, on oltava myös samanlainen rivi, joka vastaa saman auton punaista versiota.
Riippuvuuksien merkitys
Tietokantariippuvuudet ovat tärkeitä ymmärtää, koska ne tarjoavat perusrakennuspalikat, joita käytetään tietokannan normalisoinnissa, prosessissa tietojen tehokkaassa järjestämisessä tietokannassa. Esimerkiksi:
- Jotta taulukolla olisi toinen normaalimuoto (2NF), taulukossa ei saa olla ei-prime-attribuuttia, joka on toiminnallisesti riippuvainen ehdokasavaimen osajoukosta.
- Jotta taulukko olisi kolmannessa normaalimuodossa (3NF), jokaisella ei-prime-attribuutilla on oltava ei-transitiivinen toiminnallinen riippuvuus jokaisesta ehdokasavaimesta.
- Jotta taulukko olisi Boyce-Coddin normaalimuodossa (BCNF), jokaisen toiminnallisen riippuvuuden (paitsi triviaaleja riippuvuuksia) on oltava superavaimella.
- Jotta taulukko olisi neljännessä normaalimuodossa (4NF), sillä ei saa olla moniarvoisia riippuvuuksia.