Skip to main content

Prehodna odvisnost v podatkovni bazi

Anonim

Prehodna odvisnost v bazi podatkov je posredna povezava med vrednostmi v isti tabeli, ki povzroča funkcionalno odvisnost. Za doseganje normalizacijskega standarda tretje normalne oblike (3NF) morate odstraniti prehodno odvisnost.

Tranzitna odvisnost po svoji naravi zahteva tri ali več atributov (ali stolpce baze podatkov), ki imajo funkcionalno odvisnost med njimi, kar pomeni, da se stolpec A v tabeli opira na stolpec B skozi vmesni stolpec C.

Poglejmo, kako bi to lahko delovalo.

Primer tranzitivne odvisnosti

AVTORJI

Author_IDAvtorKnjigaAvtor_Nationality
Auth_001Orson Scott karticaEnderova igraZdružene države
Auth_001Orson Scott karticaEnderova igraZdružene države
Auth_002Margaret AtwoodOsebna zgodbaKanada

V zgornjem primeru AUTORI:

  • Knjiga → Avtor : Tukaj je Knjiga atribut določa Avtor atribut. Če poznate ime knjige, se lahko naučite imena avtorja. Vendar, Avtor ne določa Knjiga , ker avtor lahko napiše več knjig. Na primer, samo zato, ker poznavamo avtorjevo ime Orson Scott Card, še vedno ne poznamo imena knjige.
  • Avtor → Avtor_Nationality : Prav tako, Avtor atribut določa Avtor_Nationality , vendar ne obratno; samo zato, ker vemo, da državljanstvo ne pomeni, da lahko avtor določimo.

Toda ta tabela uvaja prehodno odvisnost:

  • Knjiga → Avtor_Nationality: Če poznamo ime knjige, lahko določimo državljanstvo prek stolpca Avtor.

Izogibanje prehodnim odvisnostim

Da zagotovimo tretjo običajno obliko, odstranimo prehodno odvisnost.

Začnemo z odstranitvijo stolpca »Knjiga« iz tabele »Avtorji« in z izdelavo ločene knjižne tabele:

KNJIGE

Book_IDKnjigaAuthor_ID
Book_001Enderova igraAuth_001
Book_001Otroci umAuth_001
Book_002Osebna zgodbaAuth_002

AVTORJI

Author_IDAvtorAvtor_Nationality
Auth_001Orson Scott karticaZdružene države
Auth_002Margaret AtwoodKanada

Ali je to popravilo? Oglejmo si zdaj naše odvisnosti:

BOOKS tabela:

  • Book_ID → Knjiga: The Knjiga odvisno od Book_ID .
  • Nobene druge odvisnosti v tej tabeli ne obstajajo, zato smo v redu. Upoštevajte, da je tuji ključ Author_ID povezuje to tabelo s tabelo AUTHORS s svojim primarnim ključem Author_ID . Ustvarili smo odnos, da bi se izognili prehodni odvisnosti, ključni zasnovi relacijskih podatkovnih baz.

Tabela AUTHORS:

  • Author_ID → Avtor: The Avtor odvisno od Author_ID .
  • Avtor → Avtor_Nationality: Državljanstvo lahko določi avtor.
  • Author_ID → Avtor_Nationality: Državljanstvo se lahko določi iz Author_ID skozi Avtor atribut. Še vedno imamo prehodno odvisnost.

Za normalizacijo teh podatkov moramo dodati tretjo tabelo:

DRŽAVE

Country_IDDržava
Coun_001Združene države
Coun_002Kanada

AVTORJI

Author_IDAvtorCountry_ID
Auth_001Orson Scott karticaCoun_001
Auth_002Margaret AtwoodCoun_002

Zdaj imamo tri tabele, ki uporabljajo tuje ključe za povezavo med tabelami:

  • Tuji ključ tabele je tuji Author_ID povezuje knjigo z avtorjem v tabeli AUTHORS.
  • Tuji ključ tabele AUTHORS Country_ID povezuje avtorja z državo v tabeli COUNTRIES.
  • Tabela COUNTRIES nima nobenega tujega ključa, ker nima potrebe po povezavi z drugo tabelo v tem načrtu.

Zakaj so tranzitivne odvisnosti slaba oblika baze podatkov

Kakšna je vrednost izogibanja prehodnim odvisnostim, da bi zagotovili 3NF? Poglejmo si svojo prvo mizo in si oglejte vprašanja, ki jih ustvarja:

AVTORJI

Author_IDAvtorKnjigaAvtor_Nationality
Auth_001Orson Scott karticaEnderova igraZdružene države
Auth_001Orson Scott karticaOtroci umZdružene države
Auth_002Margaret AtwoodOsebna zgodbaKanada

Ta oblika lahko prispeva k nepravilnostim in neskladnostim podatkov, na primer:

  • Če ste izbrisali dve knjigi "Otroci duha" in "Enderjeva igra", bi izbrisali avtorja "Orson Scott Card" in njegovo državljanstvo iz baze podatkov.
  • V zbirko podatkov ne morete dodati novega avtorja, razen če dodate knjigo; kaj, če je avtor še neobjavljen ali pa ne poznate imena knjige, ki jo je ustvarila?
  • Če je "Orson Scott Card" spremenil državljanstvo, ga boste morali spremeniti v vse zapise, v katerih se prikaže. Če ima več zapisov z istim avtorjem, lahko privede do netočnih podatkov: kaj, če oseba, ki vnese podatke, ne zaveda, da za njim obstaja več zapisov in spremeni podatke v samo en zapis?
  • Ne morete izbrisati knjige, kot je "The Handmaid's Tale", ne da bi v celoti odstranili avtorja.

To so samo nekateri razlogi, zakaj normalizacija in izogibanje prehodnim odvisnostim varujejo podatke in zagotavljajo doslednost.