Uso de cookies

Utilizamos cookies propias y de terceros para mejorar nuestros servicios y mostrarle publicidad relacionada con sus preferencias mediante el análisis de sus hábitos de navegación. Si continúa navegando, consideramos que acepta su uso. Para obtener más información o bien conocer cómo cambiar la configuración lea nuestra Política de cookies

Establecer relaciones muchos a muchos en OpenOffice Base

En este tipo de relaciones no sirve la solución anterior de crear una columna en la tabla del lado del muchos apuntando a la otra tabla porque, como cualquier fila de cada una de las dos tablas puede apuntar a varias filas de la otra tabla, ¿a cuál de las filas de la otra tabla apuntaríamos?.

La solución en este caso es crear una nueva tabla (a la que llamaremos Protagonistas, ver Figura 4.16) con, al menos, dos columnas, cada una de ellas para apuntar a cada una de las claves primarias respectivas de las tablas que queremos relacionar, de manera que cada fila de esta tabla va a representar las relaciones que existen entre las filas de ambas tablas; es decir, cada una de las relaciones que veíamos representadas en la figura 4.9 en forma de flecha van a ser una fila de esta nueva tabla como se puede apreciar en la figura 4.17.

Base 20 04.006.png
Figura 4.16. Diseño de la tabla Protagonistas
Base 20 04.005.png
Figura 4.17. Contenido de la tabla Protagonistas

De la tabla que acabamos de crear falta puntualizar dos cosas. La primera, que es posible añadir nuevas columnas a esta tabla para guardar más información, es decir, no habría ningún problema, por ejemplo, en añadir una nueva columna llamada Papel donde guardáramos el nombre del personaje que el intérprete realiza en dicha película. Lo segundo, que para fijar la clave primaria debemos seleccionar juntas las dos columnas que apuntan a las otras tablas e indicar que ambas juntas son claves primarias. Esto último se puede apreciar también en la figura 4.16 donde se ve que ambas figuran con el símbolo de la llave que significa que son clave primaria.

Una vez que tenemos creada esta tabla nos falta indicar en OOo Base las relaciones existentes, siguiendo la misma mecánica que hemos visto en el anterior apartado.

Así, una vez que nos hemos situado de nuevo en la ventana Relaciones y hemos añadido las tablas que queremos relacionar a dicha ventana, debemos indicar que existe una relación entre la tabla Peliculas y Protagonistas por un lado (Figura 4.18) y la tabla Protagonistas e Interpretes por otro (Figura 4.).

Base 20 04.004.png
Figura 4.18. Relación entre Peliculas y Protagonistas
Base 20 04.003.png
Figura 4.19. Relación entre Protagonistas e Interpretes

Como podemos observar en el diagrama resultante (Figura 4.20), al añadir la tabla Protagonistas, la relación muchos a muchos que existía entre Peliculas e Interpretes se ha convertido en una relación uno a muchos de Peliculas a Protagonistas y en otra relación uno a muchos de Interpretes a Protagonistas. Esto es debido a que, dada una fila de Protagonistas, va a estar relacionada con una de Interpretes y una de Peliculas pero, dada una fila de Interpretes y Peliculas, pueden estar relacionadas con muchas de protagonistas. Por ejemplo, la fila de Protagonistas con los valores [5,10] sólo va a estar relacionada con la película La Comunidad del Anillo por un lado y la interprete Liv Tyler por otro, pero, La Comunidad del Anillo está y puede estar relacionada con muchas filas de Protagonistas (tantas como protagonistas guardemos de esa película) y la intérprete Liv Tyler también está y puede estar relacionada con muchas filas de Protagonistas (tantas como en películas haya participado).

Esto ocurre siempre con las relaciones muchos a muchos: primero se crea una tabla intermedia para relacionar ambas tablas y luego la relación que pasan a tener las dos tablas originales con la recién creada es de uno a muchos, respectivamente. Además, en este caso, es recomendable fijar las opciones de actualización y borrado a “en cascada”.

Base 20 04.002.png
Figura 4.20. Diagrama de relaciones final
Modificada el 27 ago 2015 15:46.   Visitas: 20 821