Sa isang relational database, ang isang dependency ay nangyayari kapag ang impormasyong nakaimbak sa parehong talahanayan ng database ay natatanging tinutukoy ang iba pang impormasyon na nakaimbak sa parehong talahanayan. Ang isang multivalued dependency ay nangyayari kapag ang pagkakaroon ng isa o higit pang mga row sa isang talahanayan ay nagpapahiwatig ng pagkakaroon ng isa o higit pang mga row sa parehong talahanayan. Sa ibang paraan, dalawang attribute (o column) sa isang table ang independiyente sa isa't isa, ngunit parehong nakadepende sa ikatlong attribute.
Pinipigilan ng multivalued dependency ang normalization standard fourth normal form. Ang mga relational database ay sumusunod sa limang normal na anyo na kumakatawan sa mga alituntunin para sa disenyo ng talaan. Pinipigilan nila ang mga anomalya sa pag-update at hindi pagkakapare-pareho sa data. Ang ikaapat na normal na anyo ay tumatalakay sa marami-sa-isang ugnayan sa isang database.
Functional Dependency vs. Multivalued Dependency
Upang maunawaan ang isang multivalued dependency, makatutulong na muling bisitahin kung ano ang functional dependency.
Kung ang katangiang X ay natatanging tumutukoy sa isang katangiang Y, ang Y ay umaasa sa X. Ito ay isinusulat bilang X -> Y. Halimbawa, sa talahanayan ng Mga Mag-aaral sa ibaba, tinutukoy ng Student_Name ang Major:
Pangalan_Mag-aaral | Major |
---|---|
Ravi | Kasaysayan ng Sining |
Beth | Chemistry |
Ang functional dependency na ito ay maaaring isulat: Student_Name -> Major. Tinutukoy ng bawat Student_Name ang eksaktong isang Major at wala na.
Kung gusto mong masubaybayan din ng database ang mga isports na ginagawa ng mga mag-aaral na ito, maaari mong isipin na ang pinakamadaling paraan para gawin ito ay magdagdag lang ng isa pang column na may pamagat na Sport:
Pangalan_Mag-aaral | Major | Sport |
---|---|---|
Ravi | Kasaysayan ng Sining | Soccer |
Ravi | Kasaysayan ng Sining | Volleyball |
Ravi | Kasaysayan ng Sining | Tennis |
Beth | Chemistry | Tennis |
Beth | Chemistry | Soccer |
Ang problema dito ay parehong naglalaro ng ilang sports sina Ravi at Beth. Kinakailangang magdagdag ng bagong row para sa bawat karagdagang sport.
Ang talahanayang ito ay nagpasimula ng isang multivalued dependency dahil ang major at ang sport ay independyente sa isa't isa ngunit parehong nakadepende sa mag-aaral. Ito ay isang simpleng halimbawa at madaling matukoy, ngunit ang isang multivalue dependency ay maaaring maging isang problema sa isang malaki, kumplikadong database.
Ang multivalued dependency ay nakasulat X ->-> Y. Sa kasong ito:
Pangalan_Mag-aaral ->-> Major
Pangalan_Mag-aaral -64334 > Sport
Ito ay binabasa bilang "Student_Name multidetermines Major" at "Student_Name multidetermines Sport."
Ang isang multivalued dependency ay palaging nangangailangan ng hindi bababa sa tatlong attribute dahil binubuo ito ng kahit man lang dalawang attribute na nakadepende sa isang third.
Multivalued Dependency at Normalization
Ang isang table na may multivalued dependency ay lumalabag sa normalization standard ng fourth normal form dahil ito ay lumilikha ng mga hindi kinakailangang redundancies at maaaring mag-ambag sa hindi pantay na data. Upang dalhin ito sa 4NF, kailangang hatiin ang impormasyong ito sa dalawang talahanayan.
Ang talahanayan sa ibaba ay mayroon na ngayong functional dependency ng Student_Name -> Major, at walang multivalued dependencies:
Pangalan_Mag-aaral | Major |
---|---|
Ravi | Kasaysayan ng Sining |
Ravi | Kasaysayan ng Sining |
Ravi | Kasaysayan ng Sining |
Beth | Chemistry |
Beth | Chemistry |
Habang ang talahanayang ito ay mayroon ding isang functional dependency ng Student_Name -> Sport:
Pangalan_Mag-aaral | Sport |
---|---|
Ravi | Soccer |
Ravi | Volleyball |
Ravi | Tennis |
Beth | Tennis |
Beth | Soccer |
Ang normalisasyon ay kadalasang ginagawa sa pamamagitan ng pagpapasimple ng mga kumplikadong talahanayan upang maglaman ang mga ito ng impormasyong nauugnay sa isang ideya o tema sa halip na subukang gumawa ng isang talahanayan na naglalaman ng masyadong maraming magkakaibang impormasyon.