V relacijski bazi podatkov se odvisnost pojavi, ko informacije, shranjene v isti tabeli baze podatkov, enolično določajo druge informacije, shranjene v isti tabeli. Večvrednostna odvisnost se pojavi, ko prisotnost ene ali več vrstic v tabeli implicira prisotnost ene ali več drugih vrstic v tej isti tabeli. Povedano drugače, dva atributa (ali stolpca) v tabeli sta neodvisna drug od drugega, oba pa sta odvisna od tretjega atributa.
Večvrednostna odvisnost preprečuje normalizacijski standard četrte normalne oblike. Relacijske baze podatkov sledijo petim običajnim oblikam, ki predstavljajo smernice za oblikovanje zapisa. Preprečujejo anomalije pri posodabljanju in nedoslednosti v podatkih. Četrta običajna oblika se ukvarja z razmerji mnogo proti ena v bazi podatkov.
Funkcionalna odvisnost v primerjavi z odvisnostjo z več vrednostmi
Da bi razumeli odvisnost z več vrednostmi, je koristno ponovno preučiti, kaj je funkcionalna odvisnost.
Če atribut X enolično določa atribut Y, potem je Y funkcionalno odvisen od X. To je zapisano kot X -> Y. Na primer, v spodnji tabeli študentov ime_študenta določa smer:
Ime_študenta | glavni |
---|---|
Ravi | Umetnostna zgodovina |
Beth | kemija |
To funkcionalno odvisnost lahko zapišemo: Student_Name -> Major. Vsako ime_študenta določa točno eno smer in nič več.
Če želite, da baza podatkov spremlja tudi športe, s katerimi se ukvarjajo ti študenti, se vam morda zdi, da je najlažji način za to, da dodate še en stolpec z naslovom Šport:
Ime_študenta | glavni | šport |
---|---|---|
Ravi | Umetnostna zgodovina | Nogomet |
Ravi | Umetnostna zgodovina | Odbojka |
Ravi | Umetnostna zgodovina | tenis |
Beth | kemija | tenis |
Beth | kemija | Nogomet |
Težava tukaj je, da tako Ravi kot Beth igrata več športov. Za vsak dodatni šport je potrebno dodati novo vrstico.
Ta tabela je uvedla večvrednostno odvisnost, ker sta smer in šport neodvisna drug od drugega, vendar sta oba odvisna od študenta. To je preprost primer, ki ga je zlahka prepoznati, vendar bi večvrednostna odvisnost lahko postala težava v veliki, zapleteni bazi podatkov.
Večvrednostna odvisnost je zapisana X ->-> Y. V tem primeru:
Ime_študenta ->-> Major
Ime_študenta ->- > Šport
To se bere kot "Student_Name multidetermines Major" in "Student_Name multidetermines Sport."
Večvrednostna odvisnost vedno zahteva vsaj tri atribute, ker je sestavljena iz vsaj dveh atributov, ki sta odvisna od tretjega.
Večvrednostna odvisnost in normalizacija
Tabela z večvrednostno odvisnostjo krši normalizacijski standard četrte normalne oblike, ker ustvarja nepotrebne redundance in lahko prispeva k nedoslednim podatkom. Da bi to pripeljali do 4NF, je treba te podatke razdeliti v dve tabeli.
Spodnja tabela ima zdaj funkcionalno odvisnost Student_Name -> Major in nobenih odvisnosti z več vrednostmi:
Ime_študenta | glavni |
---|---|
Ravi | Umetnostna zgodovina |
Ravi | Umetnostna zgodovina |
Ravi | Umetnostna zgodovina |
Beth | kemija |
Beth | kemija |
Medtem ko ima ta tabela tudi eno samo funkcionalno odvisnost od Student_Name -> Sport:
Ime_študenta | šport |
---|---|
Ravi | Nogomet |
Ravi | Odbojka |
Ravi | tenis |
Beth | tenis |
Beth | Nogomet |
Normalizacijo pogosto dosežemo s poenostavitvijo zapletenih tabel, tako da vsebujejo informacije, povezane z eno samo idejo ali temo, namesto da poskušamo narediti eno tabelo, ki vsebuje preveč različnih informacij.