Mikä on transitiivinen riippuvuus tietokannassa

Transitiivinen riippuvuus tietokannassa on epäsuora suhde saman taulukon arvojen välillä, joka aiheuttaa a toiminnallinen riippuvuus. Saavuttaakseen Kolmannen normaalimuodon (3NF) normalisointistandardi, sinun on poistettava kaikki transitiivinen riippuvuus.

Luonteeltaan transitiivinen riippuvuus vaatii kolme tai useampia attribuutteja (tai tietokantararakkeet), joiden välillä on toiminnallinen riippuvuus, mikä tarkoittaa, että taulukon sarake A perustuu sarakkeeseen B välisarakkeen C kautta. Katsotaan kuinka tämä voi toimia.

Esimerkki transitiivisesta riippuvuudesta

TEKIJÄT

Tekijän_ID Tekijä Kirja Tekijä_kansallisuus
Auth_001 Orson Scott Card Enderin peli Yhdysvallat
Auth_001 Orson Scott Card Mielen lapset Yhdysvallat
Auth_002 Margaret Atwood Neitsyttaren tarina Kanada

Yllä olevassa AUTHORS-esimerkissä:

  • Kirja → Tekijä: Tässä Kirja attribuutti määrittää Tekijä attribuutti. Jos tiedät kirjan nimen, voit oppia myös kirjailijan nimen. Kuitenkin, Tekijä ei määrää Kirja, koska kirjailija voi kirjoittaa useita kirjoja. Esimerkiksi vain siksi, että tiedämme kirjoittajan nimen
    Orson Scott Card, emme vieläkään tiedä kirjan nimeä.
  • Tekijä → Tekijä_kansallisuus: Samoin Tekijä attribuutti määrittää Tekijä_kansallisuus, mutta ei päinvastoin – se, että tiedämme kirjoittajan kansallisuuden, ei tarkoita, että voimme määrittää kirjoittajan.

Mutta tämä taulukko esittelee transitiivisen riippuvuuden:

  • Kirja → Tekijä_kansallisuus: Jos tiedämme kirjan nimen, voimme määrittää tekijän kansallisuuden Tekijä-sarakkeen kautta.

Transitiivisten riippuvuuksien välttäminen

Kolmannen normaalin muodon varmistamiseksi poistetaan transitiivinen riippuvuus.

Voimme aloittaa poistamalla Kirja-sarakkeen Tekijät-taulukosta ja luomalla erillisen Kirjat-taulukon:

KIRJAT

Kirja_ID Kirja Tekijän_ID
Kirja_001 Enderin peli Auth_001
Kirja_001 Mielen lapset Auth_001
Kirja_002 Neitsyttaren tarina Auth_002

TEKIJÄT

Tekijän_ID Tekijä Tekijä_kansallisuus
Auth_001 Orson Scott Card Yhdysvallat
Auth_002 Margaret Atwood Kanada

Korjasiko tämä asian? Tutkitaanpa meidän riippuvuuksia nyt:

KIRJAT pöytä:

  • Kirja_ID → Kirja: Kirja riippuu Kirja_ID.
  • Tässä taulukossa ei ole muita riippuvuuksia, joten olemme kunnossa. Huomaa, että vieras avain, Author_ID, linkittää tämän taulukon AUTHORS-taulukkoon sen ensisijaisen avaimen kautta, Tekijän_ID. Olemme luoneet suhteen välttääksemme transitiivisen riippuvuuden, joka on keskeinen suunnittelu relaatiotietokannat.

TEKIJÄT-taulukko:

  • Tekijätunnus → Tekijä: Tekijä riippuu Tekijän_ID.
  • Tekijä → Tekijä_kansallisuus:Tekijä voi määrittää kansallisuuden.
  • Tekijän_tunnus → Tekijän_kansallisuus: Kansallisuus voidaan määrittää Tekijän_ID läpi Tekijä attribuutti. Meillä on edelleen transitiivinen riippuvuus.

Meidän on lisättävä kolmas taulukko näiden tietojen normalisoimiseksi:

MAAT

Country_ID Maa
Count_001 Yhdysvallat
Count_002 Kanada

TEKIJÄT

Tekijän_ID Tekijä Country_ID
Auth_001 Orson Scott Card Count_001
Auth_002 Margaret Atwood Count_002

Nyt meillä on käytössämme kolme pöytää vieraita avaimia linkittääksesi taulukoiden välillä:

  • KIRJA-taulukon vierasavain, Tekijän_ID, linkittää kirjan kirjoittajaan AUTHORS-taulukossa.
  • AUTHORS-taulukon viiteavain, Country_ID, linkittää kirjoittajan COUNTRIES-taulukon maahan.
  • COUNTRIES-taulukossa ei ole vierasavainta, koska sen ei tarvitse linkittää toiseen taulukkoon tässä mallissa.

Miksi transitiiviset riippuvuudet ovat huonoja tietokantasuunnittelua

Mitä hyötyä on välttää transitiivisia riippuvuuksia 3NF: n varmistamiseksi? Tarkastellaanpa ensimmäistä taulukkoamme uudelleen ja katsotaan sen aiheuttamia ongelmia:

TEKIJÄT

Tekijän_ID Tekijä Kirja Tekijä_kansallisuus
Auth_001 Orson Scott Card Enderin peli Yhdysvallat
Auth_001 Orson Scott Card Mielen lapset Yhdysvallat
Auth_002 Margaret Atwood Neitsyttaren tarina Kanada

Tällainen suunnittelu voi aiheuttaa tietojen poikkeavuuksia ja epäjohdonmukaisuuksia, esimerkiksi:

  • Jos poistit kaksi kirjaa Mielen lapset ja Enderin peli, poistaisit kirjailijan "Orson Scott Card" ja hänen kansalaisuutensa kokonaan tietokannasta.
  • Et voi lisätä uutta kirjailijaa tietokantaan, ellet lisää myös kirjaa. Entä jos kirjailija on vielä julkaisematon tai et tiedä hänen kirjoittaman kirjan nimeä?
  • Jos "Orson Scott Card" vaihtaisi kansalaisuutensa, sinun on vaihdettava hänen kansalaisuutensa kaikissa tietueissa, joissa hän esiintyy. Useiden tietueiden käyttäminen samalla tekijällä voi johtaa epätarkkoihin tietoihin. Entä jos tietojen syöttäjä ei ymmärrä, että jollekin on useita tietueita, ja muuttaa tietoja vain yhdessä tietueessa?
  • Et voi poistaa kirjaa esim Neitsyttaren tarina poistamatta myös kirjoittajaa kokonaan.

Usein Kysytyt Kysymykset

  • Millaisia ​​riippuvuuksia tietokannan hallintajärjestelmässä on? Siellä on neljä erilaista tietokantariippuvuutta: triviaaliset toiminnalliset riippuvuudet, täydelliset toiminnalliset riippuvuudet, transitiiviset riippuvuudet ja moniarvoiset riippuvuudet.
  • Miten toiminnallinen riippuvuus eroaa transitiivisesta riippuvuudesta? Tietokannan hallinnassa riippuvuus on kahden tai useamman attribuutin (sarakkeen) välinen suhde. Vaikka toiminnallinen riippuvuus on saman suhteen kahden attribuutin välinen yhteys, transitiivinen riippuvuus ilmenee, kun epäsuora suhde aiheuttaa toiminnallisen riippuvuuden.