logo

Prehodna odvisnost v DBMS

Oglejmo si relacijo R(A B C). Tukaj so A, B in C znani kot atribut relacije R. Ko se pojavi naslednji pogoj; potem pride do prehodne odvisnosti v DBMS. Pogoji so A → B, B → C. Zato pogoj postane A → C. Z drugimi besedami, lahko rečemo, da ko odvisnosti naredita dve funkcionalni odvisnosti, postanejo funkcionalne odvisnosti tranzitivne odvisnosti.

Kaj je prehodna odvisnost?

Razmislite o razmerju R(A B C). Tukaj so A, B in C znani kot atribut relacije R. Ko se pojavi naslednji pogoj; potem pride do prehodne odvisnosti v DBMS. Pogoji so A → B, B → C. Zato postane pogoj A → C. v tranzitivnih funkcionalnih odvisnostih je odvisnik neposredno odvisen od determinante.

Razumejmo tranzitivne odvisnosti s pomočjo naslednjega primera.

Author_ID Avtor Knjiga Avtor_Državljanstvo
A1 Arundhati Roy Bog majhnih stvari Indija
A1 Kiran Desai Dedovanje izgube Indija
A2 R. K. Narayan Ljudojedec iz Malgudyja Indija

V zgornji tabeli avtorjev to dobimo.

    Knjiga → Avtor:Tukaj je atribut avtorja določen z atributom knjige. Če kdo pozna ime knjige, lahko izve tudi ime avtorja.Avtor → Državljanstvo_avtorja:Če kdo pozna avtorjevo ime, lahko izve tudi avtorjevo državljanstvo.Knjiga → Avtor_Narodnost: Če kdo pozna ime knjige, lahko izve tudi narodnost avtorja.

Če natančno pogledamo zgoraj obravnavane funkcionalne odvisnosti, najdemo naslednji vzorec.

  • A → B in B → C B → C; torej A → CA → C.
  • A → Knjiga, B → Avtor B → Avtor in C → Avtor_Državljanstvo C→Author_Državljanstvo

Recimo, da uporabimo tretjo normalno obliko (3NF) v zgornji avtorski tabeli. V tem primeru je treba odstraniti prehodno odvisnost avtorske tabele, postopek odstranjevanja prehodnih odvisnosti baze podatkov pa je znan kot postopek normalizacije.

Kako se izogniti prehodnim odvisnostim?

Ponovno razmislimo o zgornji avtorski tabeli in poglejmo, kakšna vrsta težave se pojavi med ustvarjanjem tabele.

Tabela avtorjev:

Author_ID Avtor Knjiga Avtor_Državljanstvo
A1 Arundhati Roy Bog majhnih stvari Indija
A1 Kiran Desai Dedovanje izgube Indija
A2 R. K. Narayan Ljudojedec iz Malgudyja Indija

Anomalije podatkov (kot so anomalije pri posodabljanju, vstavljanju in brisanju) in nedoslednosti lahko prispeva tabela avtorja. Ko je v zbirki podatkov preveč redundance, pride do anomalij v podatkih. Podatkovne anomalije nastanejo tudi, ko pride do težave pri posodabljanju, brisanju in vstavljanju novih podatkov. Na primer, v tabeli avtorjev-

  • Ne moremo dodati novega avtorja, dokler ne moremo dodati knjige v tabelo.
  • Avtorja ne moremo izbrisati, dokler knjige popolnoma ne izbrišemo iz baze.
  • Če želimo izbrisati knjigo 'Bog majhnih stvari', se izbrišejo tudi ID avtorja, avtor in narodnost.

Zgornje težave se pojavijo v vsakem odnosu, ki vsebuje prehodne odvisnosti.

Tretja normalna oblika z odstranitvijo tranzitivne odvisnosti

Razmislimo o Avtorska tabela s tremi atributi (Author_ID, Author, Author_Nationality) in poskusite najti in odstraniti prehodno odvisnost iz te tabele,

Tabela avtorjev:

Author_ID Avtor Knjiga Avtor_Državljanstvo
A1 Arundhati Roy Bog majhnih stvari Indija
A1 Kiran Desai Dedovanje izgube Indija
A2 R. K. Narayan Ljudojedec iz Malgudyja Indija

Zgornja avtorjeva tabela ni v 3NF, ker ima prehodno odvisnost. Poglejmo, kako

foreach java
  • Avtor → Narodnost_avtorja Avtor → Narodnost_avtorja
  • Avtor_ID → Avtor

Zato obstaja tudi naslednja funkcionalna odvisnost,

  • Authir_ID → Author_Nationality oblikuje vzorec, podoben tistemu, o katerem smo razpravljali zgoraj.

Zdaj, da odpravimo prehodno odvisnost, moramo samo razdeliti tabelo Author's na tak način, da Author_ID ne bo več funkcionalno odvisen od Author_Nationality.

Ustvarimo dve tabeli, eno vsebuje samo { Author_ID, Author} in drugo {Author_Nationality}. Nove tabele bodo izgledale takole,

Avtorska tabela

Author_ID Avtor
A1 Bog majhnih stvari
A2 Dedovanje izgube
A3 Ljudojedec iz Malgudyja

Tabela narodnosti avtorja

Avtor Avtor_Državljanstvo
Arundhati Roy Indija
Kiran Desai Indija
R. K. Narayan Indija

Zdaj nova tabela avtorja in tabela državljanstva avtorja ne vsebujeta tranzitivne odvisnosti in relacija je zdaj v 3NF.