Višestruka zavisnost prekida četvrtu normalnu formu
U relacionoj bazi podataka, zavisnost se javlja kada informacije koje se čuvaju u istoj tablici baze podataka jedinstveno određuju druge informacije koje se čuvaju u istoj tabeli. Multivalentna zavisnost se javlja kada prisustvo jednog ili više redova u tabeli podrazumeva prisustvo jednog ili više drugih redova u toj istoj tabeli. Stavite drugi način, dva atributa (ili kolona) u tabeli su nezavisna jedni od drugih, ali oboje zavise od trećeg atributa.
Multivalentna zavisnost sprečava normalizaciju standardnog četvrtog normalnog oblika (4NF). Relacijske baze podataka prate pet standardnih formulara koji predstavljaju smernice za dizajn zapisa. Oni sprečavaju anomalije ažuriranja i nedoslednosti u podacima. Četvrti uobičajeni oblik bavi se odnosom mnogih sa jednim u bazi podataka .
Funkcionalna zavisnost u odnosu na višestruku zavisnost
Da bi se shvatila zavisnost od višenamenskih, korisno je da se ponovo osvrnemo na funkcionalnu zavisnost.
Ako atribut X jedinstveno određuje atribut Y, onda je Y funkcionalno zavisan od X. Ovo je napisano kao X -> Y. Na primer, u Tabeli Studenti ispod, Student_Name određuje glavnog:
Ime studenta | Majore |
---|---|
Ravi | Istorija umjetnosti |
Beth | Hemija |
Ova funkcionalna zavisnost može biti napisana: Student_Name -> Major . Svaki Student_Name određuje tačno jedan Major i više.
Ako želite da baza podataka takođe prati sportove koje učenici uzimaju, možda mislite da je najlakši način da to uradite samo da dodate novu kolonu pod nazivom Sport:
Ime studenta | Majore | Sport |
---|---|---|
Ravi | Istorija umjetnosti | Fudbal |
Ravi | Istorija umjetnosti | Odbojka |
Ravi | Istorija umjetnosti | Tenis |
Beth | Hemija | Tenis |
Beth | Hemija | Fudbal |
Problem je u tome što Ravi i Beth igraju više sportova. Neophodno je dodati novi red za svaki dodatni sport.
Ova tabela je uvela višenamensku zavisnost, jer glavni i sport su nezavisni jedni od drugih, ali oboje zavise od učenika.
Ovo je jednostavan primjer i lako se može prepoznati, ali višestruka zavisnost može postati problem u velikoj, složenoj bazi podataka.
Višestukovana zavisnost je napisana 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."
Višestuvanost zavisnosti uvek zahteva najmanje tri atribute jer se sastoji od najmanje dva atributa koji zavise od trećine.
Višestruka zavisnost i normalizacija
Tabela sa višenamjenskom zavisnošću krši standardizaciju standardne četvrte normalne forme (4NK) jer stvara nepotrebne tehnološke viškove i može doprinijeti nekonzistentnim podacima. Da bi se ovo dovelo do 4NF, neophodno je razbiti ove informacije u dvije tabele.
Donja tabela sada ima funkcionalnu zavisnost Student_Name -> Major i bez višenamenskih zavisnosti:
Ime studenta | Majore |
---|---|
Ravi | Istorija umjetnosti |
Ravi | Istorija umjetnosti |
Ravi | Istorija umjetnosti |
Beth | Hemija |
Beth | Hemija |
Iako ova tabela ima i jednu funkcionalnu zavisnost Student_Name -> Sport:
Ime studenta | Sport |
---|---|
Ravi | Fudbal |
Ravi | Odbojka |
Ravi | Tenis |
Beth | Tenis |
Beth | Fudbal |
Jasno je da se normalizaciji često obraća pojednostavljenjem složenih tabela, tako da sadrže informacije vezane za jednu ideju ili temu umesto da pokušaju napraviti jednu tablicu koja sadrži previše različitih informacija.