En una base de datos relacional, se produce una dependencia cuando la información almacenada en la misma tabla de base de datos determina de manera única otra información almacenada en la misma tabla. Una dependencia multivaluada se produce cuando la presencia de una o más filas en una tabla implica la presencia de una o más filas en esa misma tabla. Dicho de otra manera, dos atributos (o columnas) en una tabla son independientes entre sí, pero ambos dependen de un tercer atributo.
Una dependencia multivaluada impide la normalización de la cuarta forma normal (4NF). Las bases de datos relacionales siguen cinco formas normales que representan pautas para el diseño de registros. Evitan las anomalías de actualización e inconsistencias en los datos. La cuarta forma normal trata con las relaciones de varios a uno en una base de datos.
Dependencia funcional frente a dependencia multivaluada
Para comprender una dependencia multivaluada, es útil revisar qué es una dependencia funcional.
Si un atributo X determina de forma única un atributo Y, entonces Y depende funcionalmente de X. Esto se escribe como X -> Y. Por ejemplo, en la tabla de estudiantes a continuación, el Student_Name determina el Major:
Nombre del estudiante | Mayor |
---|---|
Ravi | Historia del Arte |
Beth | Química |
Esta dependencia funcional se puede escribir: Student_Name -> Major . Cada Student_Name determina exactamente un Major y no más. Si desea que la base de datos también haga un seguimiento de los deportes que practican estos estudiantes, podría pensar que la forma más sencilla de hacerlo es simplemente agregar otra columna titulada Deporte: El problema aquí es que tanto Ravi como Beth juegan múltiples deportes. Es necesario agregar una nueva fila para cada deporte adicional. Esta tabla ha introducido una dependencia multivaluada porque el mayor y el deporte son independientes entre sí, pero ambos dependen del estudiante. Este es un ejemplo simple y fácilmente identificable, pero una dependencia de múltiples valores podría convertirse en un problema en una base de datos grande y compleja. Una dependencia multivalor se escribe X -> -> Y. En este caso: Nombre del estudiante ->-> MayorNombre del estudiante->-> Deporte
Esto se lee como "Student_Name multidetermines Major" y "Student_Name multidetermines Sport". Una dependencia multivaluada siempre requiere al menos tres atributos porque consta de al menos dos atributos que dependen de un tercero. Una tabla con una dependencia multivaluada viola el estándar de normalización de la Cuarta Forma Normal (4NK) porque crea redundancias innecesarias y puede contribuir a datos inconsistentes. Para llevar esto a 4NF, es necesario dividir esta información en dos tablas. La siguiente tabla ahora tiene una dependencia funcional de Student_Name -> Major, y no tiene dependencias multivalor: Si bien esta tabla también tiene una única dependencia funcional de Student_Name -> Sport: Está claro que la normalización suele abordarse simplificando tablas complejas para que contengan información relacionada con una sola idea o tema en lugar de tratar de hacer que una sola tabla contenga demasiada información dispar.Nombre del estudiante Mayor Deporte Ravi Historia del Arte Fútbol Ravi Historia del Arte Voleibol Ravi Historia del Arte Tenis Beth Química Tenis Beth Química Fútbol Dependencia multivaluada y normalización
Nombre del estudiante Mayor Ravi Historia del Arte Ravi Historia del Arte Ravi Historia del Arte Beth Química Beth Química Nombre del estudiante Deporte Ravi Fútbol Ravi Voleibol Ravi Tenis Beth Tenis Beth Fútbol