Täysi toiminnallinen riippuvuus on tietokannan normalisoinnin tila, joka on toisen normaalimuodon (2NF) normalisointistandardin mukainen. Lyhyesti sanottuna tämä tarkoittaa, että se täyttää First Normal Form (1NF) -vaatimukset ja että kaikki ei-avainattribuutit ovat toiminnallisesti täysin riippuvaisia ensisijaisesta avaimesta. Tämä ei ole niin monimutkaista kuin miltä se kuulostaa. Katsotaanpa tätä tarkemmin.
Yhteenveto ensimmäisestä normaalimuodosta
Ennen kuin tietokanta voi olla täysin toiminnallisesti riippuvainen, sen on ensin noudatettava ensimmäistä normaalimuotoa. Kaikki tämä tarkoittaa, että jokaisen attribuutin tulee sisältää yksi atomiarvo. Esimerkiksi seuraava taulukko ei läpäise 1NF:ää, koska työntekijä Tina on liitetty kahteen paikkaan, molemmat yhdessä solussa:
Kollega | Paikka |
John | Los Angeles |
Tina | Los Angeles, Chicago |
Tämän mallin salliminen voi vaikuttaa negatiivisesti tietojen päivityksiin tai syötteisiin. Varmista 1NF-yhteensopivuus järjestämällä taulukko uudelleen siten, että kaikki attribuutit (tai sarakkeen solut) sisältävät yhden arvon:
Kollega | Paikka |
John | Los Angeles |
Tina | Los Angeles |
Tina | Chicago |
Mutta 1NF ei vieläkään riitä tietojen ongelmien välttämiseen.
Kuinka 2NF toimii täydellisen riippuvuuden takaamiseksi
Ollakseen täysin riippuvainen, kaikkien muiden kuin ehdokasavainmääritteiden on oltava riippuvaisia ensisijaisesta avaimesta. Ehdokasavainattribuutti on mikä tahansa avain (esimerkiksi ensisijainen tai vierasavain), jota käytetään tietokantatietueen yksilöimiseen. Tietokannan suunnittelijat käyttävät merkintää attribuuttien välisten riippuvien suhteiden kuvaamiseen: Jos attribuutti A määrittää B:n arvon, kirjoitamme tämän A -> Bmikä tarkoittaa, että B on toiminnallisesti riippuvainen A:sta. Tässä suhteessa A määrittää B:n arvon, kun taas B on riippuvainen A:sta. Esimerkiksi seuraavilla henkilöstöosastoilla pöytä, henkilöstökortti ja Osaston tunnus ovat molemmat ehdokasavaimet: henkilöstökortti on taulukon ensisijainen avain while Osaston tunnus on vieras avain. Kaikki muut attribuutit tässä tapauksessa Nimeä työntekijä ja Osaston nimi— täytyy riippua ensisijaisesta avaimesta saadakseen sen arvon.
henkilöstökortti | Nimeä työntekijä | Osaston tunnus | Osaston nimi |
Emp1 | John | Osasto001 | Rahoittaa |
Emp2 | Tina | Osasto003 | myyntiin |
mp3 | Carlos | Osasto001 | Rahoittaa |
Tässä tapauksessa taulukko ei ole täysin riippuvainen, koska vaikka EmployeeName on riippuvainen ensisijaisesta avaimesta henkilöstökorttithe Osaston nimi riippuu sen sijaan Osaston tunnus. Tätä kutsutaan osittaiseksi riippuvuudeksi. Jotta tämä taulukko olisi 2NF-yhteensopiva, meidän on erotettava tiedot kahteen taulukkoon: Työntekijät-taulukkoon ja Osastot-taulukkoon. Tämä on Työntekijät-taulukko:
henkilöstökortti | Nimeä työntekijä | Osaston tunnus |
Emp1 | John | Osasto001 |
Emp2 | Tina | Osasto003 |
mp3 | Carlos | Osasto001 |
Poistamme Osaston nimi attribuutti Työntekijät-taulukosta ja luo uusi Osastot-taulukko:
Osaston tunnus | Osaston nimi |
Osasto001 | Rahoittaa |
Osasto002 | Henkilöstöosasto |
Osasto003 | myyntiin |
Nyt taulukoiden väliset suhteet ovat täysin riippuvaisia tai 2NF:ssä.
Miksi täydellinen riippuvuus on tärkeää
Täysi riippuvuus tietokantamääritteiden välillä auttaa varmistamaan tietojen eheyden ja ehkäisemään tietojen poikkeavuuksia. Katso esimerkiksi yllä olevan osan taulukkoa, joka koskee vain 1NF:ää. Tässä vielä kerran:
Kollega | Paikka |
John | Los Angeles |
Tina | Los Angeles |
Tina | Chicago |
Tiinalla on kaksi ennätystä. Jos päivitämme yhden tietämättä, että niitä on kaksi, tuloksena olisi epäjohdonmukainen data. Tai entä jos haluamme lisätä työntekijän tähän taulukkoon, mutta emme vielä tiedä sijaintia? Emme ehkä edes saa lisätä uutta työntekijää, jos Paikka attribuutti ei salli NULL-arvoja. Täydellinen riippuvuus ei kuitenkaan ole koko kuva normalisoinnin suhteen. Sinun on varmistettava, että tietokanta on kolmannessa normaalimuodossa (3NF).