logo

Transitiivinen riippuvuus DBMS:ssä

Tarkastellaan relaatiota R(A B C). Tässä A, B ja C tunnetaan suhteen R attribuutteina. Kun seuraava ehto täyttyy; sitten transitiivinen riippuvuus esiintyy DBMS:ssä. Ehdot ovat A → B, B → C. Siksi ehdosta tulee A → C. Toisin sanoen voidaan sanoa, että kun riippuvuuksia tehdään kahdella toiminnallisella riippuvuudella, toiminnallisista riippuvuuksista tulee transitiivisia riippuvuuksia.

Mikä on transitiivinen riippuvuus?

Tarkastellaan relaatiota R(A B C). Tässä A, B ja C tunnetaan suhteen R attribuutteina. Kun seuraava ehto täyttyy; sitten transitiivinen riippuvuus esiintyy DBMS:ssä. Ehdot ovat A → B, B → C. Siksi ehdosta tulee A → C. transitiivisissa funktionaalisissa riippuvuuksissa riippuvainen on suoraan riippuvainen determinantista.

Ymmärretään transitiiviset riippuvuudet seuraavan esimerkin avulla.

Tekijän_ID Tekijä Kirja Tekijä_kansallisuus
A1 Arundhati Roy Pienten asioiden Jumala Intia
A1 Kiran Desai Menetyksen perintö Intia
A2 R. K. Narayan Malgudyn miessyöjä Intia

Yllä olevasta kirjoittajataulukosta saamme sen.

    Kirja → Tekijä:Tässä tekijä-määrite määräytyy book-attribuutin mukaan. Jos joku tietää kirjan nimen, hän voi oppia myös kirjailijan nimen.Tekijä → Tekijän_kansallisuus:Jos joku tietää kirjoittajan nimen, hän voi myös saada selville kirjailijan kansallisuuden.Kirja → Tekijä_kansallisuus: Jos joku tietää kirjan nimen, hän voi myös tietää kirjailijan kansallisuuden.

Jos tarkastelemme tarkasti edellä käsiteltyjä toiminnallisia riippuvuuksia, löydämme seuraavan kaavan.

  • A → B ja B → C B → C; siksi A → CA → C.
  • A → Kirja, B → Tekijä B → Tekijä ja C → Tekijän_kansallisuus C→ Tekijän_kansallisuus

Oletetaan, että käytämme kolmatta normaalimuotoa (3NF) yllä olevassa kirjoittajataulukossa. Siinä tapauksessa tekijätaulukon transitiivinen riippuvuus on poistettava, ja tietokannan transitiivisten riippuvuuksien poistamisprosessi tunnetaan normalisointiprosessina.

Kuinka välttää transitiivisia riippuvuuksia?

Tarkastellaanpa yllä olevaa kirjoittajataulukkoa uudelleen ja katsotaan, millainen ongelma ilmenee taulukon luomisen aikana.

Kirjoittajataulukko:

Tekijän_ID Tekijä Kirja Tekijä_kansallisuus
A1 Arundhati Roy Pienten asioiden Jumala Intia
A1 Kiran Desai Menetyksen perintö Intia
A2 R. K. Narayan Malgudyn miessyöjä Intia

Tietojen poikkeamat (kuten päivitys-, lisäys- ja poistohäiriöt) ja epäjohdonmukaisuudet voivat johtua tekijätaulukosta. Kun tietokannassa on liikaa redundanssia, dataan syntyy poikkeavuuksia. Tietojen poikkeavuuksia syntyy myös silloin, kun tietojen päivittämisessä, poistamisessa ja lisäämisessä on ongelmia. Esimerkiksi kirjoittajataulukossa-

  • Emme voi lisätä uutta kirjailijaa ennen kuin emme voi lisätä kirjaa taulukkoon.
  • Emme voi poistaa kirjoittajaa ennen kuin poistamme kirjan kokonaan tietokannasta.
  • Jos haluamme poistaa kirjan 'Pienten esineiden jumala', myös kirjailijan tunnus, kirjailija ja kansallisuus poistetaan.

Yllä olevat ongelmat ilmenevät kaikissa suhteissa, jotka sisältävät transitiivisia riippuvuuksia.

Kolmas normaalimuoto poistamalla transitiivisen riippuvuuden

Otetaan huomioon Tekijätaulukko kolmella attribuutilla (Author_ID, Author, Author_Nationality) ja yritä löytää ja poistaa transitiivinen riippuvuus tästä taulukosta,

Tekijöiden taulukko:

Tekijän_ID Tekijä Kirja Tekijä_kansallisuus
A1 Arundhati Roy Pienten asioiden Jumala Intia
A1 Kiran Desai Menetyksen perintö Intia
A2 R. K. Narayan Malgudyn miessyöjä Intia

Yllä oleva tekijän taulukko ei ole 3NF:ssä, koska sillä on transitiivinen riippuvuus. Katsotaanpa miten

aritmeettinen logiikkayksikkö
  • Tekijä → Tekijä_kansallisuus Tekijä → Tekijän_kansallisuus
  • Tekijän_ID → Tekijä

Siksi on olemassa myös seuraava toiminnallinen riippuvuus,

  • Authir_ID → Author_Nationalality muodostaa samanlaisen mallin kuin mitä yllä käsittelimme.

Transitiivisen riippuvuuden poistamiseksi meidän tarvitsee vain jakaa Tekijän taulukko siten, että Tekijän_ID ei ole enää toiminnallisesti riippuvainen tekijän kansallisuudesta.

Luodaan kaksi taulukkoa, joista toinen sisältää vain { Author_ID, Author} ja toinen sisältää {Author_Nationality}. Uudet pöydät näyttävät tältä,

Tekijätaulukko

Tekijän_ID Tekijä
A1 Pienten asioiden Jumala
A2 Menetyksen perintö
A3 Malgudyn miessyöjä

Tekijän kansallisuustaulukko

Tekijä Tekijä_kansallisuus
Arundhati Roy Intia
Kiran Desai Intia
R. K. Narayan Intia

Nyt uusi tekijätaulukko ja tekijän kansallisuus -taulukko eivät sisällä transitiivista riippuvuutta ja relaatio on nyt 3NF:ssä.