Si existe más de un atributo multivaluado es cuando se presentan dependencias multivaluadas.
Definición: en una relación con los atributos X, Y y Z existe una dependencia multivaludada de Y con respecto a X si los posibles valores de Y para un par de valores de X y Z dependen únicamente del valor de X.
Supongamos que en nuestra relación anterior de Agenda añadimos otro atributo para guardar direcciones de correo electrónico. Se trata, por supuesto, de otro atributo multivaluado, ya que cada persona puede tener más de una dirección de correo, y este atributo es independiente del número de teléfono:
Agenda(nombre, fecha_nacimiento, estado_civil, teléfono, correo)
Ahora surgen los problemas, supongamos que nuestro amigo "Fulano", además de los tres números de teléfono, dispone de dos direcciones de correo. ¿Cómo almacenaremos la información relativa a estos datos? Tenemos muchas opciones:
Agenda nombre fecha_nacimiento estado_civil teléfono correo Fulano 13/02/1960 casado 13321232 fulano@sucasa.eko Fulano 13/02/1960 casado 25565445 fulano@sutrabajo.aka Fulano 13/02/1960 casado 36635363 fulano@sucasa.eko
Si optamos por crear tres tuplas, ya que hay tres teléfonos, y emparejar cada dirección con un teléfono, en la tercera tupla estaremos obligados a repetir una dirección. Otra opción sería usar un NULL en esa tercera tupla.
Agenda nombre fecha_nacimiento estado_civil teléfono correo Fulano 13/02/1960 casado 13321232 fulano@sucasa.eko Fulano 13/02/1960 casado 25565445 fulano@sutrabajo.aka Fulano 13/02/1960 casado 36635363 NULL
Pero estas opciones ocultan el hecho de que ambos atributos son multivaluados e independientes entre si. Podría parecer que existe una relación entre los números y las direcciones de correo.
Intentemos pensar en otras soluciones:
Agenda nombre fecha_nacimiento estado_civil teléfono correo Fulano 13/02/1960 casado 13321232 fulano@sucasa.eko Fulano 13/02/1960 casado 25565445 fulano@sucasa.aka Fulano 13/02/1960 casado 36635363 fulano@sucasa.eko Fulano 13/02/1960 casado 13321232 fulano@sutrabajo.eko Fulano 13/02/1960 casado 25565445 fulano@sutrabajo.aka Fulano 13/02/1960 casado 36635363 fulano@sutrabajo.eko
Agenda nombre fecha_nacimiento estado_civil teléfono correo Fulano 13/02/1960 casado 13321232 NULL Fulano 13/02/1960 casado 25565445 NULL Fulano 13/02/1960 casado 36635363 NULL Fulano 13/02/1960 casado NULL fulano@sutrabajo.eko Fulano 13/02/1960 casado NULL fulano@sucasa.eko
Ahora está claro que los atributos son independientes, pero el precio es crear más tuplas para guardar la misma información, es decir, mayor redundancia.
Pero no sólo eso. Las operaciones de inserción de nuevos datos, corrección o borrado se complican. Ninguna de esas operaciones se puede hacer modificando sólo una tupla, y cuando eso sucede es posible que se produzcan inconsistencias.
La cuarta forma normal tiene por objetivo eliminar las dependencias multivaluadas.
Definición: Una relación está en 4NF si y sólo si, en cada dependencia
multivaluada X ->-> Y
no trivial, X es clave candidata.
Una dependencia multivaluada A ->-> B
es trivial cuando B es parte de A. Esto sucede
cuando A es un conjunto de atributos, y B es un subconjunto de A.
Tomemos por ejemplo la tabla de Agenda, pero dejando sólo los atributos multivaluados:
Agenda(nombre, teléfono, correo)
Lo primero que debemos hacer es buscar las claves y las dependencias. Recordemos que las claves candidatas deben identificar de forma unívoca cada tupla. De modo que estamos obligados a usar los tres atributos para formar la clave candidata.
Pero las dependencias que tenemos son:
nombre ->-> teléfono
nombre ->-> correo
Y nombre no es clave candidata de esta relación.
Resumiendo, debemos separar esta relación en varias (tantas como atributos multivaluados tenga).
Teléfonos(nombre, teléfono) Correos(nombre, correo)
Ahora en las dos relaciones se cumple la cuarta forma normal.
Existe una quinta forma normal, pero no la veremos en este curso. Sirve para eliminar dependencias de proyección o reunión, que raramente se encuentran en las bases de datos que probablemente manejaremos. Si tienes interés en saber más sobre este tema, consulta la bibliografía.
© Diciembre de 2004 Salvador Pozo, salvador@conclase.net