Skip to main content

Transitiivinen riippuvuus tietokannasta

Mark Bell's Power Project EP. 228 Live - Mike Dolce (Kesäkuu 2026)

Mark Bell's Power Project EP. 228 Live - Mike Dolce (Kesäkuu 2026)
Anonim

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_IDkirjailijaKirjaAuthor_Nationality
Auth_001Orson Scott CardEnder's GameYhdysvallat
Auth_001Orson Scott CardEnder's GameYhdysvallat
Auth_002Margaret AtwoodKäsikirjan tarinaKanada

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_IDKirjaAuthor_ID
Book_001Ender's GameAuth_001
Book_001Mielen lapsetAuth_001
Book_002Käsikirjan tarinaAuth_002

TEKIJÄT

Author_IDkirjailijaAuthor_Nationality
Auth_001Orson Scott CardYhdysvallat
Auth_002Margaret AtwoodKanada

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_IDMaa
Coun_001Yhdysvallat
Coun_002Kanada

TEKIJÄT

Author_IDkirjailijaCountry_ID
Auth_001Orson Scott CardCoun_001
Auth_002Margaret AtwoodCoun_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_IDkirjailijaKirjaAuthor_Nationality
Auth_001Orson Scott CardEnder's GameYhdysvallat
Auth_001Orson Scott CardMielen lapsetYhdysvallat
Auth_002Margaret AtwoodKäsikirjan tarinaKanada

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.