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.
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ä.