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šeznačna zavisnost se javlja kada prisustvo jednog ili više redova u tabeli implicira prisustvo jednog ili više drugih redova u istoj tabeli. Drugim rečima, dva atributa (ili kolone) u tabeli su nezavisni jedan od drugog, ali oba zavise od trećeg atributa.
Viševrijedna zavisnost sprječava normalizaciju standardnog četvrtog normalnog oblika. Relacijske baze podataka slijede pet normalnih oblika koji predstavljaju smjernice za dizajn zapisa. One sprječavaju anomalije ažuriranja i nedosljednosti u podacima. Četvrta normalna forma bavi se odnosima više prema jedan u bazi podataka.
Funkcionalna zavisnost naspram viševrijedne zavisnosti
Da biste razumjeli viševrijednu zavisnost, korisno je ponovo pogledati šta je funkcionalna zavisnost.
Ako atribut X jedinstveno određuje atribut Y, tada je Y funkcionalno ovisan o X. Ovo se piše kao X -> Y. Na primjer, u tabeli Studenti ispod, Student_Name određuje smjer:
Ime_studenta | Major |
---|---|
Ravi | Historija umjetnosti |
Beth | Hemija |
Ova funkcionalna zavisnost se može napisati: Student_Name -> Major. Svaki Student_Name određuje tačno jedan smjer i ne više.
Ako želite da baza podataka prati i sportove koji se bave ovim studentima, možda mislite da je najlakši način da to uradite samo da dodate još jednu kolonu pod nazivom Sport:
Ime_studenta | Major | Sport |
---|---|---|
Ravi | Historija umjetnosti | Soccer |
Ravi | Historija umjetnosti | Odbojka |
Ravi | Historija umjetnosti | Tenis |
Beth | Hemija | Tenis |
Beth | Hemija | Soccer |
Ovdje problem je što se i Ravi i Beth bave nekoliko sportova. Za svaki dodatni sport potrebno je dodati novi red.
Ova tabela je uvela viševrednostnu zavisnost jer su smer i sport nezavisni jedan od drugog, ali oba zavise od učenika. Ovo je jednostavan primjer i lako ga je prepoznati, ali ovisnost o više vrijednosti može postati problem u velikoj, složenoj bazi podataka.
Piše se višeznačna zavisnost X ->-> Y. U ovom slučaju:
Ime_studenta ->-> Major
Student_Name -24-64 > Sport
Ovo se čita kao "Ime_studenta višestruko određuje glavni predmet" i "Ime_učenika višestruko određuje sport."
Zavisnost sa više vrijednosti uvijek zahtijeva najmanje tri atributa jer se sastoji od najmanje dva atributa koja zavise od trećeg.
Višestruka zavisnost i normalizacija
Tabela sa viševrijednom zavisnošću krši standard normalizacije četvrtog normalnog oblika jer stvara nepotrebne redundancije i može doprinijeti nedosljednim podacima. Da biste ovo doveli do 4NF, potrebno je ovu informaciju podijeliti u dvije tabele.
Tabela ispod sada ima funkcionalnu zavisnost Student_Name -> Major, i nema viševrijednih zavisnosti:
Ime_studenta | Major |
---|---|
Ravi | Historija umjetnosti |
Ravi | Historija umjetnosti |
Ravi | Historija umjetnosti |
Beth | Hemija |
Beth | Hemija |
Dok ova tabela takođe ima jednu funkcionalnu zavisnost od Student_Name -> Sport:
Ime_studenta | Sport |
---|---|
Ravi | Soccer |
Ravi | Odbojka |
Ravi | Tenis |
Beth | Tenis |
Beth | Soccer |
Normalizacija se često postiže pojednostavljivanjem složenih tabela tako da sadrže informacije vezane za jednu ideju ili temu umjesto pokušaja da jedna tabela sadrži previše različitih informacija.