Opas tietokantariippuvuuksien ymmärtämiseen
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 myös kuvata tätä suhteeksi, jossa tietää arvo yhden attribuutin (tai attribuuttijoukon) arvo riittää kertomaan toisen attribuutin (tai attribuuttijoukon) arvon samassa taulukossa.
Tietokantariippuvuudet hämmentävät usein sekä opiskelijoita että tietokanta-ammattilaisia. Onneksi ne eivät ole niin monimutkaisia kuin miltä näyttää. Ne voidaan parhaiten selittää muutamalla esimerkillä. Tässä tarkastellaan yleisiä tietokantariippuvuustyyppejä.
Tietokannan riippuvuudet ja toiminnalliset riippuvuudet
Sanominen, että taulukon attribuuttien välillä on riippuvuus, on sama kuin sanominen, että on olemassa a toiminnallinen riippuvuus näiden ominaisuuksien välillä. Jos tietokannassa on sellainen riippuvuus attribuutti B on riippuvainen attribuutista A, kirjoitat tämän seuraavasti:
A -> B
Esimerkiksi taulukossa, jossa luetellaan työntekijän ominaisuudet, mukaan lukien sosiaaliturvatunnus (SSN) ja nimi, se voi olla sanoi, että nimi riippuu SSN: stä (tai SSN -> nimi), koska työntekijän nimi voidaan määrittää yksiselitteisesti SSN. Käänteinen lause (nimi -> SSN) ei kuitenkaan pidä paikkaansa, koska useammalla kuin yhdellä työntekijällä voi olla sama nimi, mutta heillä on aina eri SSN-tunnukset.
Triviaaliset toiminnalliset riippuvuudet
Triviaali toiminnallinen riippuvuus ilmenee, kun kuvaat attribuutin toiminnallista riippuvuutta attribuuttijoukosta, 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 johtaa terveestä järjestä. On selvää, että jos tiedät jo B: n arvon, B: n arvo voidaan määrittää yksiselitteisesti tällä tiedolla.
Täydelliset toiminnalliset riippuvuudet
Täysi toiminnallinen riippuvuus syntyy, kun täytät jo toiminnallisen riippuvuuden vaatimukset ja funktionaalisen riippuvuuskäskyn vasemmalla puolella olevaa attribuuttijoukkoa ei voi pienentää millään edelleen. Esimerkiksi {SSN, ikä} -> nimi on toiminnallinen riippuvuus, mutta se ei ole a 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 a transitiivinen riippuvuus kun se on totta vain siksi, että sekä A -> B että B -> C ovat tosia.
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 autoyritystä, joka valmistaa useita automalleja, mutta tekee jokaisesta mallista aina sekä punaisen että sinisen värin. Jos sinulla on taulukko, joka sisältää jokaisen yrityksen valmistaman auton mallin nimen, värin ja vuoden, siellä on a moniarvoinen riippuvuus tuossa taulukossa. Jos tietylle mallille ja vuodelle on rivi sinisellä, on oltava myös samanlainen rivi, joka vastaa saman auton punaista versiota.
Riippuvuuksien merkitys
Tietokantariippuvuudet on tärkeää ymmärtää, koska ne tarjoavat perusrakennuspalikat, joita käytetään tietokannan normalisointi, prosessi tietojen tehokkaaseen järjestämiseen tietokantaan. Esimerkiksi:
- Jotta pöytä olisi paikalla toinen normaalimuoto (2NF), taulukossa ei saa olla tapausta nonprime-attribuutista, joka on toiminnallisesti riippuvainen osajoukosta ehdokasavain.
- Jotta pöytä olisi paikalla kolmas normaalimuoto (3NF), jokaisella nonprime-attribuutilla on oltava ei-transitiivinen toiminnallinen riippuvuus jokaisesta ehdokasavaimesta.
- Jotta pöytä olisi paikalla Boyce-Coddin normaalimuoto (BCNF), jokaisen toiminnallisen riippuvuuden (muut kuin triviaaliset riippuvuudet) on oltava superavaimessa.
- Jotta taulukko olisi neljännessä normaalimuodossa (4NF), sillä ei saa olla moniarvoisia riippuvuuksia.