En una base de dades relacional, es produeix una dependència quan la informació emmagatzemada a la mateixa taula de base de dades determina de manera única altra 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 aquesta mateixa taula. Dit d'una altra manera, dos atributs (o columnes) d'una taula són independents l'un de l' altre, però tots dos depenen d'un tercer atribut.
Una dependència multivalor impedeix la quarta forma normal estàndard de normalització. Les bases de dades relacionals segueixen cinc formes normals que representen pautes per al disseny de registres. Prevenen anomalies d'actualització i inconsistències en les dades. La quarta forma normal tracta de relacions de molts a un en una base de dades.
Dependència funcional vs. dependència multivalor
Per entendre una dependència multivalorada, és útil revisar què és una dependència funcional.
Si un atribut X determina de manera única un atribut Y, aleshores Y depèn funcionalment de X. Això s'escriu com a X -> Y. Per exemple, a la taula d'Estudiants següent, el Nom_Estudiant determina el Major:
Nom_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 practiquen aquests estudiants, potser penseu que la manera més senzilla de fer-ho és afegir una altra columna titulada Esport:
Nom_Estudiant | Major | Esports |
---|---|---|
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 |
El problema aquí és que tant en Ravi com en Beth practiquen diversos esports. Cal afegir una fila nova per a cada esport addicional.
Aquesta taula ha introduït una dependència multivalorada perquè la carrera i l'esport són independents l'un de l' altre 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 gran i complexa.
S'escriu una dependència multivalor X ->-> Y. En aquest cas:
Nom_Estudiant ->-> Major
Nom_Estudiant -6433 > Esports
Això es llegeix com a "El nom_de_l'estudiant determina de manera múltiple la major" i "El nom_de l'estudiant determina l'esport de manera múltiple".
Una dependència multivalora sempre requereix almenys tres atributs perquè consta d'almenys dos atributs que depenen d'un tercer.
Dependència i normalització multivalores
Una taula amb una dependència multivalora infringeix l'estàndard de normalització de la quarta forma normal perquè crea redundàncies innecessàries i pot contribuir a dades inconsistents. Per portar-ho a 4NF, cal dividir aquesta informació en dues taules.
La taula següent ara té una dependència funcional de Student_Name -> Major, i no hi ha cap dependència multivalor:
Nom_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 |
Tot i que aquesta taula també té una única dependència funcional de Student_Name -> Sport:
Nom_Estudiant | Esports |
---|---|
Ravi | Futbol |
Ravi | Voleibol |
Ravi | Tennis |
Beth | Tennis |
Beth | Futbol |
La normalització s'aconsegueix sovint simplificant taules complexes de manera que continguin informació relacionada amb una sola idea o tema en lloc d'intentar que una sola taula contingui massa informació dispar.