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