3. Relaciones

La estructura básica de almacenamiento de datos en una base es la tabla. Cada tabla tiene a su vez, una estructura distinta de las otras tablas.
 
 
Sin embargo, OOo Base permite trabajar con datos de varias tablas en consultas, formularios e informes. Esto es posible gracias a las conexiones que se establecen entre las tablas, denominadas relaciones.
relaciones

Img 37. Relaciones entre tablas

Imagen de Wikipedia con licencia GNU

Icono IDevice Actividad

Una relación es un vínculo entre campos de tablas distintas que describe una interacción entre los mismos.

 

Los tipos de relaciones en OOo Base son: uno a muchos, muchos a muchos y uno a uno.


Las relaciones permiten simplificar la estructura de las tablas y la repetición de ciertos valores en todos los registros de una tabla.

 

Un ejemplo sencillo es utilizar una tabla para almacenar los tipos de transporte de los pedidos y sus costes. Cada tipo estará identificado por un campo llave primaria. Basta introducir el identificador del tipo de transporte en la tabla pedidos y no el resto de campos.

Tipos de relaciones

 

Ya has estudiado genéricamente las relaciones en el tema 1. En este apartado verás las que permite OOo Base y la forma de establecerlas.

Uno a muchos Un registro de la tabla de origen puede relacionarse con varios registros de la segunda tabla. La relación no es reversible, sólo se da en esta dirección (tabla origen a tabla destino).
Muchos a muchos Varios registros de la tabla origen pueden relacionarse con varios registros de la segunda tabla y viceversa. Varios registros de la tabla de destino pueden relacionarse con registros de la tabla de origen.
Uno a uno Un registro de la tabla de origen se relaciona con un solo registro de la segunda tabla. Es la menos frecuente y se usa para que el número de campos de una tabla no sea excesivo.

 

Icono de iDevice AV - Actividad de Espacios en Blanco

Escribe qué tipo de relación es la más adecuada: a) uno a muchos; b) muchos a muchos; c) uno a uno.

(Escribe sólo a, b, c).

Estudiantes matriculados y asignaturas de un curso.
Un país y su gobernante.
Un cliente y los pedidos realizados.
  

Establecer relaciones

 

 

El panel en el que se crean las relaciones se abre en el menú HerramientasRelaciones.

 

En esta pantalla se pueden añadir a la relación las tablas necesarias mediante el icono Agregar tablas.

agregar tabla

Las tablas seleccionadas aparecerán en ventanas con todos sus campos visibles. El siguiente paso es definir la relación haciendo clic en el icono Nueva relación.

nueva relación




 

La mejor forma de explicar el proceso de trabajo es utilizar ejemplos prácticos.

Icono de iDevice Ejemplo o ejercicio resuelto
Relación uno a muchos
 
 
En nuestra base de datos hemos creado la tabla Pedidos para almacenar toda la información relativa a los pedidos de los clientes. Para ello, vamos a establecer relaciones con otras tablas para evitar incluir campos cuyos valores se repiten con bastante frecuencia. Además, de este modo la tabla contendrá menos datos.
En la información del pedido es importante incluir el tipo de transporte que se va a utilizar, los costes que conlleva, el retraso que genera en la entrega del pedido y el medio utilizado. Estos datos se repetirían continuamente en la tabla, puesto que sólo se usan cinco tipos de transporte.
Por ello, vamos a establecer una relación uno a muchos entre la tabla Transporte y la tabla Pedidos.
Primero es necesario crear la tabla Transporte, asignando la llave primaria a un campo denominado IDTransporte de tipo Integer con valores entre 1 y 5. Diseña la tabla con los campos de la imagen y después escribe los datos de la tabla.
diseño tabla transporte
datos transporte
Img 39. Diseño tabla Transporte Img 40. Datos tabla Transporte
Edita la tabla Pedidos y añade un campo denominado TipoTransporte del mismo tipo.
campo TipoTransporte
Ahora solamente falta establecer la relación uno a muchos entre ambos campos.

Icono IDevice Objetivos
Relación muchos a muchos
 
 
El concepto de esta relación es totalmente distinto al anterior. Se utiliza cuando se establecen relaciones múltiples entre varias tablas. Por ejemplo, un proveedor puede servir varios productos y un producto puede ser servido por varios proveedores.
 
Tranquilo, de momento no tienes que crear las tablas ni relacionarlas. Pero puedes consultar un ejemplo en este tutorial de OOo Base: relaciones_entre_tablas

Icono IDevice Pre-conocimiento

Relación uno a uno

 

 

Esta relación no se usa para simplificar datos que se repiten continuamente en tablas o para establecer relaciones múltiples. ¿Cuál podría ser un buen ejemplo de su utilización en el campo empresarial?

 

  • Un buen ejemplo es la división de tablas en dos para simplificarlas relacionando dos campos uno a uno.
  • Otro ejemplo podría ser aislar una parte de la tabla por seguridad, por ejemplo, el número de cuenta bancaria de un cliente o datos confidenciales.
  • En tercer lugar y en el sentido opuesto al anterior, es útil esta relación para dividir la tabla en dos cuando hay datos que son efímeros y permitir, así, que se eliminen con facilidad borrando la segunda tabla.