Transitiivinen riippuvuus tietokannasta on välillinen suhde samassa taulukossa olevien arvojen kanssa, joka aiheuttaa funktionaalisen riippuvuuden. Kolmannen normaalin muodon (3NF) normalisointitason saavuttamiseksi sinun on poistettava kaikki välitön riippuvuus.
Transitiivinen riippuvuus edellyttää luonteensa vuoksi, että kolme tai useampi attribuutti (tai tietokantapylväs) on funktionaalinen riippuvuus niiden välillä, mikä tarkoittaa, että taulukon sarake A perustuu sarakkeeseen B välivaiheen C kautta.
Katsotaanpa, miten tämä voisi toimia.
Transitiivinen riippuvuusesimerkki
TEKIJÄT
| Author_ID | kirjailija | Kirja | Author_Nationality |
|---|---|---|---|
| Auth_001 | Orson Scott Card | Ender's Game | Yhdysvallat |
| Auth_001 | Orson Scott Card | Ender's Game | Yhdysvallat |
| Auth_002 | Margaret Atwood | Käsikirjan tarina | Kanada |
Edellä olevassa AUTHORS-esimerkissä:
- Kirja → kirjailija : Tässä, Kirja attribuutti määrittää kirjailija ominaisuus. Jos tiedät kirjan nimen, voit oppia tekijän nimen. Kuitenkin, kirjailija ei määritä Kirja , koska tekijä voi kirjoittaa useita kirjoja. Esimerkiksi, koska tiedämme tekijän nimen Orson Scott Card, emme vielä tiedä kirjan nimeä.
- kirjailija → Author_Nationality : Samoin kirjailija attribuutti määrittää Author_Nationality , mutta ei toisinpäin; vain koska tiedämme, että kansalaisuus ei tarkoita, että voimme määrittää kirjoittajan.
Mutta tässä taulukossa esitetään transitiivinen riippuvuus:
- Kirja → Author_Nationality: Jos tiedämme kirjan nimen, voimme määrittää kansalaisuuden Kirjoittaja-sarakkeen kautta.
Välttämättömien riippuvuuksien välttäminen
Varmistamme Kolmannen Normaalin muodon poistamalla transitiivisen riippuvuuden.
Voimme aloittaa poistamalla Kirja-sarakkeen Tekijät-taulukosta ja luomalla erillisen Kirjat-taulukon:
KIRJAT
| Book_ID | Kirja | Author_ID |
|---|---|---|
| Book_001 | Ender's Game | Auth_001 |
| Book_001 | Mielen lapset | Auth_001 |
| Book_002 | Käsikirjan tarina | Auth_002 |
TEKIJÄT
| Author_ID | kirjailija | Author_Nationality |
|---|---|---|
| Auth_001 | Orson Scott Card | Yhdysvallat |
| Auth_002 | Margaret Atwood | Kanada |
Korjaa tämä se? Tarkastellaan nyt riippuvuuksiamme:
KIRJAT taulukko:
- Book_ID → Kirja: Kirja riippuu Book_ID .
- Tässä taulukossa ei ole muita riippuvuuksia, joten olemme kunnossa. Huomaa, että ulkomainen avain Author_ID linkittää tämän taulukon AUTHORS-taulukkoon ensisijaisen avaimen kautta Author_ID . Olemme luoneet suhteen, jotta vältyttäisiin välilliseltä riippuvuudelta, joka on relaatiotietokantojen avaintekijä.
AUTHORS-taulukko:
- Author_ID → Kirjoittaja: kirjailija riippuu Author_ID .
- kirjailija → Author_Nationality: Kirjoittaja voi määrittää kansalaisuuden.
- Author_ID → Author_Nationality: Kansalaisuus voidaan määritellä Author_ID läpi kirjailija ominaisuus. Meillä on edelleen siirtymävaiheen riippuvuus.
Näiden tietojen normalisointiin on lisättävä kolmas taulukko:
MAAT
| Country_ID | Maa |
|---|---|
| Coun_001 | Yhdysvallat |
| Coun_002 | Kanada |
TEKIJÄT
| Author_ID | kirjailija | Country_ID |
|---|---|---|
| Auth_001 | Orson Scott Card | Coun_001 |
| Auth_002 | Margaret Atwood | Coun_002 |
Nyt meillä on kolme pöytää, jotka käyttävät ulkomaisia avaimia yhdistämään taulukoiden välillä:
- BOOK-taulukon ulkonäppäintä Author_ID linkittää kirjan tekijään AUTHORS-taulukossa.
- AUTHORS-taulukon ulkonäppäintä Country_ID linkittää tekijän maahan maakohtaiseen taulukkoon.
- COUNTRIES-taulukossa ei ole vierasta avainta, koska se ei ole tarpeen liittää toiseen taulukkoon tässä mallissa.
Miksi siirrettävät riippuvuudet ovat huonosti tietokannan suunnittelua
Mikä on vältettävien riippuvuuksien välttämisen arvo, joka auttaa varmistamaan 3NF: n? Katsotaanpa ensin meidän ensimmäinen taulukko ja tarkastelemme sen aiheita:
TEKIJÄT
| Author_ID | kirjailija | Kirja | Author_Nationality |
|---|---|---|---|
| Auth_001 | Orson Scott Card | Ender's Game | Yhdysvallat |
| Auth_001 | Orson Scott Card | Mielen lapset | Yhdysvallat |
| Auth_002 | Margaret Atwood | Käsikirjan tarina | Kanada |
Tällainen muotoilu voi osaltaan vaikuttaa datan poikkeamiin ja epäjohdonmukaisuuksiin, esimerkiksi:
- Jos poistit kaksi kirjaa "Mind of Children" ja "Ender's Game", poistat tekijän "Orson Scott Card" ja hänen kansalaisuutensa kokonaan tietokannasta.
- Et voi lisätä uutta tekijää tietokantaan, ellet lisää myös kirjaa; mitä jos tekijä on vielä julkaisematta tai et tiedä hänen kirjansa nimeä?
- Jos "Orson Scott Card" muutti kansalaisuutensa, sinun olisi muutettava se kaikkiin tietueisiin, joissa hän esiintyy. Jos sinulla on useita kirjauksia saman kirjoittajan kanssa, se voi johtaa epätarkkoihin tietoihin: mitä jos tietojen syöttö henkilö ei ymmärrä, hänellä on useita tietueita ja muuttaa tiedot vain yhdestä tietueesta?
- Et voi poistaa kirjan, kuten "The Handmaid's Tale", poistamatta kirjailijaa kokonaan.
Nämä ovat vain muutamia syitä, joiden vuoksi normalisointi ja välillisten riippuvuussuhteiden välttäminen suojaavat tietoja ja varmistavat johdonmukaisuuden.




