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