logo

Tranzitívna závislosť v DBMS

Uvažujme vzťah R(A B C). A, B a C sú tu známe ako atribút vzťahu R. Keď nastane nasledujúca podmienka; potom sa tranzitívna závislosť vyskytuje v DBMS. Podmienky sú A → B, B → C. Preto sa podmienka stáva A → C. Inými slovami, môžeme povedať, že keď sú závislosti vytvorené dvoma funkčnými závislosťami, potom sa funkčné závislosti stanú tranzitívnymi závislosťami.

Čo je tranzitívna závislosť?

Uvažujme vzťah R(A B C). A, B a C sú tu známe ako atribút vzťahu R. Keď nastane nasledujúca podmienka; potom sa tranzitívna závislosť vyskytuje v DBMS. Podmienky sú A → B, B → C. Preto sa podmienka stáva A → C. v tranzitívnych funkčných závislostiach je závislá priamo závislá na determinante.

Poďme pochopiť tranzitívne závislosti pomocou nasledujúceho príkladu.

Author_ID Autor Kniha Autor_Národnosť
A1 Arundhati Roy Boh malých vecí India
A1 Kiran Desai Dedičstvo straty India
A2 R. K. Narayan Pojedač ľudí z Malgudy India

Vo vyššie uvedenej tabuľke autorov to dostaneme.

    Kniha → Autor:Tu je atribút autora určený atribútom kniha. Ak niekto pozná názov knihy, môže sa dozvedieť aj meno autora.Autor → Autor_Národnosť:Ak niekto pozná meno autora, môže sa dozvedieť aj národnosť autora.Kniha → Autor_Národnosť: Ak niekto pozná názov knihy, môže sa dozvedieť aj národnosť autora.

Ak sa bližšie pozrieme na funkčné závislosti diskutované vyššie, nájdeme nasledujúci vzor.

  • A -> B a B -> C B -> C; preto A → CA → C.
  • A → Kniha, B → Autor B → Autor a C → Autor_Národnosť C→Národnosť_autora

Predpokladajme, že použijeme Tretiu normálnu formu (3NF) vo vyššie uvedenej tabuľke autorov. V takom prípade sa musí odstrániť prechodná závislosť tabuľky autora a proces odstránenia prechodných závislostí databázy je známy ako proces normalizácie.

Ako sa vyhnúť prechodným závislostiam?

Pozrime sa znova na vyššie uvedenú tabuľku autora a uvidíme, aký typ problému sa vyskytne počas vytvárania tabuľky.

Tabuľka autorov:

Author_ID Autor Kniha Autor_Národnosť
A1 Arundhati Roy Boh malých vecí India
A1 Kiran Desai Dedičstvo straty India
A2 R. K. Narayan Pojedač ľudí z Malgudy India

K anomáliám údajov (ako sú anomálie aktualizácie, vkladania a vymazania) a nekonzistentnosti môže prispieť tabuľka autora. Keď je v databáze príliš veľa redundancie, potom sú v údajoch spôsobené anomálie údajov. Dátové anomálie vznikajú aj pri problémoch s aktualizáciou, odstraňovaním a vkladaním nových údajov. Napríklad v tabuľke autora-

  • Nemôžeme pridať nového autora, kým nebudeme môcť pridať knihu do tabuľky.
  • Autora nemôžeme vymazať, kým knihu úplne nevymažeme z databázy.
  • Ak chceme vymazať knihu „Boh malých vecí“, vymaže sa aj ID autora, autor a národnosť.

Vyššie uvedené problémy sa vyskytujú v akomkoľvek vzťahu, ktorý obsahuje prechodné závislosti.

Tretia normálna forma odstránením tranzitívnej závislosti

Uvažujme o Autorská tabuľka s tromi atribútmi (Autor_ID, Autor, Autor_Národnosť) a pokúsiť sa nájsť a odstrániť tranzitívnu závislosť z tejto tabuľky,

Tabuľka autorov:

Author_ID Autor Kniha Autor_Národnosť
A1 Arundhati Roy Boh malých vecí India
A1 Kiran Desai Dedičstvo straty India
A2 R. K. Narayan Pojedač ľudí z Malgudy India

Vyššie uvedená autorská tabuľka nie je v 3NF, pretože má tranzitívnu závislosť. Pozrime sa ako

čo je špeciálny znak
  • Autor → Autor_Národnosť Autor → Autor_Národnosť
  • ID_autora → Autor

Preto existuje aj nasledujúca funkčná závislosť,

  • Authir_ID → Author_Nationality tvorí vzor podobný tomu, o ktorom sme hovorili vyššie.

Teraz, aby sme eliminovali tranzitívnu závislosť, všetko, čo musíme urobiť, je rozdeliť tabuľku autora takým spôsobom, že Author_ID už nebude funkčne závisieť od Author_Nationality.

Vytvorme dve tabuľky, jednu obsahujúcu iba { Author_ID, Author} a druhú obsahujúcu {Author_Nationality}. Nové tabuľky budú vyzerať takto,

Tabuľka autorov

Author_ID Autor
A1 Boh malých vecí
A2 Dedičstvo straty
A3 Pojedač ľudí z Malgudy

Tabuľka národnosti autora

Autor Autor_Národnosť
Arundhati Roy India
Kiran Desai India
R. K. Narayan India

Teraz nová tabuľka Autor a Tabuľka Národnosti autora neobsahuje žiadnu tranzitívnu závislosť a vzťah je teraz v 3NF.