En una base de dades relacional, es produeix una dependència quan la informació emmagatzemada a la mateixa taula de base de dades determina únicament la resta d'informació emmagatzemada a la mateixa taula. Una dependència multivalor es produeix quan la presència d'una o més files en una taula implica la presència d'una o més files en la mateixa taula. Dit d'una altra manera, dos atributs (o columnes) d'una taula són independents entre si, però tots dos depenen d'un tercer atribut.
Una dependència multivalor impedeix la normalització de la norma quarta forma normal (4NF). Les bases de dades relacionals segueixen cinc formularis normals que representen pautes per al disseny de registres. Eviten les anomalies d'actualització i les incongruències en les dades. La quarta forma normal tracta de moltes relacions en una base de dades.
Dependència funcional vs dependència multivalor
Per comprendre una dependència multivalorada, és útil revisar quina és la dependència funcional.
Si un atribut X determina únicament un atribut Y, llavors Y depèn funcionalment de X. Això s'escriu com X -> Y. Per exemple, a la taula Estudiants a continuació, el Student_Name determina el Major:
Nom de l'estudiant | Major |
---|---|
Ravi | Història de l'Art |
Beth | Química |
Aquesta dependència funcional es pot escriure: Student_Name -> Major . Cada Student_Name determina exactament un Major i no més. Si voleu que la base de dades també faci un seguiment dels esports que realitzen aquests estudiants, podeu pensar que la forma més senzilla de fer-ho és simplement afegir una altra columna titulada Esport: El problema aquí és que tant Ravi com Beth tenen múltiples esports. Cal afegir una nova fila per a cada esport addicional. Aquesta taula ha introduït una dependència multivalorada perquè el major i l'esport són independents els uns dels altres, però tots dos depenen de l'estudiant. Aquest és un exemple senzill i fàcilment identificable, però una dependència multivalor podria convertir-se en un problema en una base de dades àmplia i complexa. Escriu una dependència multivalor X -> -> Y. En aquest cas: Nom de l'estudiant ->-> MajorNom de l'estudiant->-> Esport
Això es llegeix com "Student_Name multidetermines Major" i "Student_Name multidetermina l'esport". Una dependència multivalor sempre requereix d'almenys tres atributs, ja que consisteix en almenys dos atributs que depenen d'un tercer. Una taula amb una dependència multivalor viola l'estàndard de normalització de Fourth Normal Form (4NK) perquè crea redundàncies innecessàries i pot contribuir a dades incongruents. Per portar això a 4NF, cal trencar aquesta informació en dues taules. La taula de sota ara té una dependència funcional de Student_Name -> Major i no hi ha dependències multivalorades: Encara que aquesta taula també té una dependència funcional única de Student_Name -> Esport: Està clar que la normalització sovint s'adreça mitjançant la simplificació de taules complexes perquè continguin informació relacionada amb una sola idea o tema en lloc d'intentar que una sola taula contingui massa informació dispar.Nom de l'estudiant Major Esport Ravi Història de l'Art Futbol Ravi Història de l'Art Voleibol Ravi Història de l'Art Tennis Beth Química Tennis Beth Química Futbol Dependència multivalorada i normalització
Nom de l'estudiant Major Ravi Història de l'Art Ravi Història de l'Art Ravi Història de l'Art Beth Química Beth Química Nom de l'estudiant Esport Ravi Futbol Ravi Voleibol Ravi Tennis Beth Tennis Beth Futbol