logo

Transitīvā atkarība DBVS

Apskatīsim relāciju R(A B C). Šeit A, B un C ir zināmi kā attiecības R atribūts. Kad rodas šāds nosacījums; tad DBVS rodas pārejoša atkarība. Nosacījumi ir A → B, B → C. Tāpēc nosacījums kļūst par A → C. Citiem vārdiem sakot, mēs varam teikt, ka, ja atkarības veido divas funkcionālās atkarības, tad funkcionālās atkarības kļūst par pārejošām atkarībām.

Kas ir pārejoša atkarība?

Aplūkosim relāciju R(A B C). Šeit A, B un C ir zināmi kā attiecības R atribūts. Kad rodas šāds nosacījums; tad DBVS rodas pārejoša atkarība. Nosacījumi ir A → B, B → C. Tāpēc nosacījums kļūst par A → C. pārejošās funkcionālās atkarībās, atkarīgais ir tieši atkarīgs no determinanta.

Sapratīsim pārejošās atkarības, izmantojot šādu piemēru.

Autora_ID Autors Grāmata Autors_Nacionalitāte
A1 Arundhati Rojs Mazo lietu Dievs Indija
A1 Kirans Desai Zaudējuma mantojums Indija
A2 R. K. Narajans Malgudijas cilvēku ēdājs Indija

Iepriekš minētajā autoru tabulā mēs to iegūstam.

    Grāmata → Autors:Šeit autora atribūtu nosaka grāmatas atribūts. Ja kāds zina grāmatas nosaukumu, var uzzināt arī autora vārdu.Autors → Autors_Nacionalitāte:Ja kāds zina autora vārdu, var uzzināt arī autora tautību.Grāmata → Autors_Nacionalitāte: Ja kāds zina grāmatas nosaukumu, var uzzināt arī autora tautību.

Ja mēs rūpīgi aplūkojam iepriekš apspriestās funkcionālās atkarības, mēs atrodam šādu modeli.

  • A → B un B → C B → C; tāpēc A → CA → C.
  • A → Grāmata, B → Autors B → Autors un C → Autora_valsts C → Autora_valsts

Pieņemsim, ka mēs izmantojam trešo parasto formu (3NF) iepriekš minētajā autora tabulā. Tādā gadījumā autora tabulas pārejošā atkarība ir jānoņem, un datu bāzes pārejas atkarību noņemšanas process ir pazīstams kā normalizēšanas process.

Kā izvairīties no pārejošas atkarības?

Vēlreiz apskatīsim iepriekš minēto autoru tabulu un redzēsim, kāda veida problēma rodas tabulas izveides laikā.

Autoru tabula:

Autora_ID Autors Grāmata Autors_Nacionalitāte
A1 Arundhati Rojs Mazo lietu Dievs Indija
A1 Kirans Desai Zaudējuma mantojums Indija
A2 R. K. Narajans Malgudijas cilvēku ēdājs Indija

Datu anomālijas (piemēram, atjaunināšanas, ievietošanas un dzēšanas anomālijas) un nekonsekvenci var izraisīt autora tabula. Ja datu bāzē ir pārāk daudz dublēšanas, datos tiek izraisītas datu anomālijas. Datu anomālijas rodas arī tad, ja rodas problēmas ar atjaunināšanu, dzēšanu un jaunu datu ievietošanu. Piemēram, autora tabulā-

  • Mēs nevaram pievienot jaunu autoru, kamēr nevaram pievienot tabulai grāmatu.
  • Mēs nevaram izdzēst autoru, kamēr nav pilnībā izdzēsta grāmata no datu bāzes.
  • Ja vēlamies dzēst grāmatu “Mazo lietu Dievs”, tiek dzēsts arī autora ID, autors un tautība.

Iepriekš minētās problēmas rodas jebkurās attiecībās, kurās ir pārejošas atkarības.

Trešā parastā forma, noņemot pārejošo atkarību

Apskatīsim Autoru tabula ar trim atribūtiem (Author_ID, Author, Author_nationality) un mēģiniet atrast un novērst pārejas atkarību no šīs tabulas,

Autoru tabula:

Autora_ID Autors Grāmata Autors_Nacionalitāte
A1 Arundhati Rojs Mazo lietu Dievs Indija
A1 Kirans Desai Zaudējuma mantojums Indija
A2 R. K. Narajans Malgudijas cilvēku ēdājs Indija

Iepriekš minētā autora tabula nav 3NF, jo tai ir pārejoša atkarība. Paskatīsimies, kā

saraksts sakārtots java
  • Autors → Autors_Nacionalitāte Autors → Autors_Nacionalitāte
  • Autora_ID → Autors

Tāpēc pastāv arī šāda funkcionālā atkarība:

  • Authir_ID → Author_Nationality veido modeli, kas ir līdzīgs tam, ko mēs apspriedām iepriekš.

Tagad, lai novērstu pārejas atkarību, viss, kas mums jādara, ir sadalīt autora tabulu tā, lai Autora_ID vairs funkcionāli nebūtu atkarīgs no Autora_Nacionalitātes.

Izveidosim divas tabulas, no kurām viena satur tikai { Author_ID, Author}, bet otrā satur {Author_Nationality}. Jaunie galdi izskatīsies šādi,

Autoru tabula

Autora_ID Autors
A1 Mazo lietu Dievs
A2 Zaudējuma mantojums
A3 Malgudijas cilvēku ēdājs

Autora tautības tabula

Autors Autors_Nacionalitāte
Arundhati Rojs Indija
Kirans Desai Indija
R. K. Narajans Indija

Tagad jaunajā autoru tabulā un autora pilsonības tabulā nav pārejas atkarības, un relācija tagad ir 3NF.