Relāciju datu bāzē atkarība rodas, ja tajā pašā datu bāzes tabulā saglabātā informācija unikāli nosaka citu tajā pašā tabulā saglabāto informāciju. Daudzvērtību atkarība rodas, ja vienas vai vairāku rindu klātbūtne tabulā nozīmē vienas vai vairāku citu rindu klātbūtni tajā pašā tabulā. Citiem vārdiem sakot, divi atribūti (vai kolonnas) tabulā ir neatkarīgi viens no otra, bet abi ir atkarīgi no trešā atribūta.
Daudzvērtību atkarība novērš normalizācijas standarta ceturto normālo formu. Relāciju datu bāzēs tiek izmantotas piecas parastās formas, kas atspoguļo ierakstu izstrādes vadlīnijas. Tie novērš atjaunināšanas anomālijas un neatbilstības datos. Ceturtā parastā forma attiecas uz daudzām attiecībām datu bāzē.
Funkcionālā atkarība pret daudzvērtību atkarību
Lai izprastu daudzvērtību atkarību, ir lietderīgi vēlreiz apskatīt, kas ir funkcionālā atkarība.
Ja atribūts X unikāli nosaka atribūtu Y, tad Y ir funkcionāli atkarīgs no X. Tas ir rakstīts kā X -> Y. Piemēram, tālāk esošajā tabulā Studenti Studenta_nosaukums nosaka galveno:
Studenta_vārds | Majors |
---|---|
Ravi | Mākslas vēsture |
Beta | Ķīmija |
Šo funkcionālo atkarību var uzrakstīt: Studenta_nosaukums -> Galvenā. Katrs Student_Name nosaka tieši vienu specialitāti un ne vairāk.
Ja vēlaties, lai datu bāze izsekotu arī sporta veidus, kuros šie studenti nodarbojas, varat domāt, ka vienkāršākais veids, kā to izdarīt, ir vienkārši pievienot vēl vienu sleju ar nosaukumu Sports:
Studenta_vārds | Majors | Sports |
---|---|---|
Ravi | Mākslas vēsture | Futbols |
Ravi | Mākslas vēsture | Volejbols |
Ravi | Mākslas vēsture | Teniss |
Beta | Ķīmija | Teniss |
Beta | Ķīmija | Futbols |
Šeit problēma ir tā, ka gan Ravi, gan Beta nodarbojas ar vairākiem sporta veidiem. Katram papildu sporta veidam ir jāpievieno jauna rinda.
Šajā tabulā ir ieviesta daudzvērtīga atkarība, jo specialitāte un sporta veids ir neatkarīgi viens no otra, bet abi ir atkarīgi no studenta. Šis ir vienkāršs piemērs un viegli identificējams, taču daudzvērtību atkarība var kļūt par problēmu lielā, sarežģītā datu bāzē.
Daudzvērtību atkarība ir uzrakstīta X ->-> Y. Šajā gadījumā:
Studenta_Vārds ->-> Major
Studenta_vārds34 > Sports
Tas tiek lasīts kā "Studenta_Vārds vairākkārt nosaka galveno" un "Studenta_vārds daudznosaka sportu."
Daudzvērtību atkarībai vienmēr ir nepieciešami vismaz trīs atribūti, jo tā sastāv no vismaz diviem atribūtiem, kas ir atkarīgi no trešā.
Daudzvērtību atkarība un normalizēšana
Tabula ar daudzvērtību atkarību pārkāpj ceturtās normālās formas normalizācijas standartu, jo rada nevajadzīgas dublēšanas un var veicināt pretrunīgus datus. Lai to palielinātu līdz 4NF, šī informācija ir jāsadala divās tabulās.
Tālāk esošajā tabulā tagad ir funkcionālā atkarība no Student_Name -> Major, un nav vairāku vērtību atkarību:
Studenta_vārds | Majors |
---|---|
Ravi | Mākslas vēsture |
Ravi | Mākslas vēsture |
Ravi | Mākslas vēsture |
Beta | Ķīmija |
Beta | Ķīmija |
Lai gan šai tabulai ir arī viena funkcionālā atkarība no Student_Name -> Sports:
Studenta_vārds | Sports |
---|---|
Ravi | Futbols |
Ravi | Volejbols |
Ravi | Teniss |
Beta | Teniss |
Beta | Futbols |
Normalizāciju bieži panāk, vienkāršojot sarežģītas tabulas, lai tās saturētu ar vienu ideju vai tēmu saistītu informāciju, nevis mēģinātu panākt, lai viena tabula saturētu pārāk daudz atšķirīgas informācijas.