U relacijskoj bazi podataka, ovisnost se javlja kada informacije pohranjene u istoj tablici baze podataka jedinstveno određuju druge informacije pohranjene u istoj tablici. Viševrijedna ovisnost javlja se kada prisutnost jednog ili više redaka u tablici implicira prisutnost jednog ili više drugih redaka u toj istoj tablici. Drugim riječima, dva atributa (ili stupca) u tablici neovisna su jedan o drugome, ali oba ovise o trećem atributu.
Zavisnost s više vrijednosti sprječava standardni normalizacijski četvrti normalni oblik. Relacijske baze podataka slijede pet normalnih oblika koji predstavljaju smjernice za dizajn zapisa. Oni sprječavaju anomalije ažuriranja i nedosljednosti u podacima. Četvrti normalni oblik bavi se odnosima više-na-jedan u bazi podataka.
Funkcionalna ovisnost nasuprot ovisnosti s više vrijednosti
Da biste razumjeli viševrijednu ovisnost, korisno je ponovno razmotriti što je funkcionalna ovisnost.
Ako atribut X jedinstveno određuje atribut Y, tada je Y funkcionalno ovisan o X. Ovo je zapisano kao X -> Y. Na primjer, u tablici Studenti ispod, Student_Name određuje smjer:
Ime_učenika | glavni |
---|---|
Ravi | Povijest umjetnosti |
Beth | kemija |
Ova funkcionalna ovisnost može se napisati: Student_Name -> Major. Svaki Student_Name određuje točno jedan smjer i ništa više.
Ako želite da baza podataka prati i sportove kojima se ti učenici bave, možda mislite da je najlakši način da to učinite dodavanjem još jednog stupca pod naslovom Sport:
Ime_učenika | glavni | Sport |
---|---|---|
Ravi | Povijest umjetnosti | Nogomet |
Ravi | Povijest umjetnosti | Odbojka |
Ravi | Povijest umjetnosti | tenis |
Beth | kemija | tenis |
Beth | kemija | Nogomet |
Ovdje je problem što i Ravi i Beth igraju nekoliko sportova. Za svaki dodatni sport potrebno je dodati novi red.
Ova tablica uvela je ovisnost s više vrijednosti jer su smjer i sport neovisni jedan o drugome, ali oba ovise o studentu. Ovo je jednostavan primjer i lako ga je identificirati, ali ovisnost s više vrijednosti mogla bi postati problem u velikoj, složenoj bazi podataka.
Zavisnost s više vrijednosti piše se X ->-> Y. U ovom slučaju:
Student_Name ->-> Major
Student_Name ->- > Sport
Ovo se čita kao "Student_Name multidetermines Major" i "Student_Name multidetermines Sport."
Zavisnost s više vrijednosti uvijek zahtijeva najmanje tri atributa jer se sastoji od najmanje dva atributa koji ovise o trećem.
Multivalued Ovisnost i normalizacija
Tablica s viševrijednom ovisnošću krši standard normalizacije četvrtog normalnog oblika jer stvara nepotrebne redundancije i može pridonijeti nekonzistentnim podacima. Da bi se ovo dovelo do 4NF, potrebno je podijeliti ove informacije u dvije tablice.
Tablica u nastavku sada ima funkcionalnu ovisnost Student_Name -> Major, i nema ovisnosti s više vrijednosti:
Ime_učenika | glavni |
---|---|
Ravi | Povijest umjetnosti |
Ravi | Povijest umjetnosti |
Ravi | Povijest umjetnosti |
Beth | kemija |
Beth | kemija |
Iako ova tablica također ima jednu funkcionalnu ovisnost Student_Name -> Sport:
Ime_učenika | Sport |
---|---|
Ravi | Nogomet |
Ravi | Odbojka |
Ravi | tenis |
Beth | tenis |
Beth | Nogomet |
Normalizacija se često postiže pojednostavljivanjem složenih tablica tako da sadrže informacije povezane s jednom idejom ili temom, a ne pokušajem da jedna tablica sadrži previše različitih informacija.