1.26. Relaciones entre tablas

 

1.26. Relaciones entre tablas

 

1.26.1. Introducción

Tras crear una tabla para cada tema en la base de datos, es preciso proporcionar a Access los medios para recopilar de nuevo esa información cuando sea necesario. Para ello, se colocan campos comunes en las tablas que están relacionadas y se definen las relaciones entre las tablas. De ese modo, se pueden crear consultas, formularios e informes que muestren a la vez la información de varias tablas

Existen varias razones por las que se deben crear relaciones de tablas antes de crear otros objetos de base de datos, como formularios, consultas e informes.

  • Las relaciones de tabla inspiran los diseños de consulta. Para trabajar con registros de más de una tabla, a menudo se debe crear una consulta que combine las tablas. La consulta compara los valores del campo de clave principal de la primera tabla con el campo de clave externa de la segunda tabla. Las relaciones de tablas inspiran los diseños de formulario e informe.
  • Las relaciones de tabla son la base con la que exigir integridad referencial y evitar los registros huérfanos en la base de datos. Un registro huérfano es el que hace referencia a otro registro que no existe
 

1.26.2. Consideraciones sobre la relación de las tablas

  • En cada tabla se almacenan unos determinados datos, que no tienen por qué repetirse en las tablas, excepto los del campo común necesario para relacionarlas.
  • Aumento de la velocidad de trabajo; al no tener datos repetidos en las distintas tablas.
  • Ahorro de espacio en el disco en el que se guarde la base de datos, ya que no se almacenan datos repetidos.
  • Facilidad de mantener los datos actualizados. Sólo habrá que modificar el dato en una sola tabla.
  • Posibilidad de activar opciones de integridad referencial.
  • La relación entre dos tablas es única y se establece a través de un campo común en ambas.
  • Cuando se establece una relación entre tablas, una de ellas actuará como tabla primaria y la otra como tabla relacionada. Es obligatorio que, en la tabla primaria, el campo común esté definido como clave principal
  • No puede existir más de una relación entre dos tablas, sin embargo, una tabla sí puede estar relacionadas con varias tablas distintas.
 

1.26.3. Crear una relación de tabla mediante la ventana Relaciones

1/\    En la ficha Herramientas de base de datos, en el grupo Relaciones, clic en Relaciones.

2/\    Si aún no se ha definido ninguna relación, aparecerá automáticamente el cuadro de diálogo Mostrar tabla. Si no aparece, en la ficha Diseño, en el grupo Relaciones, clic en Mostrar tabla.

3/\    En el cuadro de diálogo Mostrar tabla se muestran todas las tablas y consultas de la base de datos. Para ver únicamente las tablas, clic en Tablas. Para ver únicamente las consultas, clic en Consultas. Para ver las tablas y las consultas, clic en Ambas.

4/\    Seleccionar una o varias tablas o consultas y, a continuación, clic en Agregar. En el ejemplo se seleccionan las tablas: Alquileres, Clientes y Películas y clic en   Cerrar.

5/\    Arrastrar un campo (normalmente el campo de clave principal) de una tabla al campo común (la clave externa) en la otra tabla. Para arrastrar varios campos, presionar la tecla CTRL, clic en cada uno de los campos y, a continuación, arrastrarlos. En el ejemplo:

  •  Arrastrar el campo Cliente de la tabla Alquileres hasta el campo DNI_NIE de la tabla Clientes.
  • Arrastrar el campo TítuloPelícula de la tabla Alquileres hasta el campo TítuloPelícula de la tabla Clientes.

1/\     Aparece el cuadro de diálogo Modificar relaciones.

2/\     Comprobar que los nombres de campo mostrados son los campos comunes de la relación. Si un nombre de campo es incorrecto, clic en él y seleccionar un nuevo campo de la lista.

3/\     Para exigir la integridad referencial para esta relación, activar la casilla de verificación Exigir integridad referencial. En el ejemplo Exigir integridad referencial

4/\     Haga clic en Crear. Se dibujará una línea de relación entre las dos tablas. Si se activó la casilla de verificación Exigir integridad referencial, la línea aparece más gruesa en los extremos. Además, solo si se activó la casilla de verificación Exigir integridad referencial, aparecerá el número 1 sobre la parte gruesa de un extremo de la línea de relación y aparece el símbolo de infinito (∞) sobre la parte gruesa del otro extremo. En el ejemplo:

  • En tabla Alquileres, a la altura del campo Cliente aparece (el cliente puede tener varios registros) y en la tabla Clientes a la altura del campo NIF-NIE aparece un 1 (el cliente solo puede  tener un registros).
  • En tabla Alquileres, a la altura del campo TítuloPelícula aparece (el Titulo  puede tener varios registros) y en la tabla Películas a la altura del campo TítuloPelícula aparece un 1 (el TítuloPelícula solo puede  tener un registros).
 

1.26.4. Tipos de relaciones de tablas

Existen tres tipos de relaciones de tablas:

  • Una relación uno a varios. Cada registro de la primera tabla sólo puede tener un registro y puede repetirse varias veces en la segunda tabla.
  • Una relación varios a varios. Cada registro de la primera tabla puede tener varios registros y  también puede repetirse varias veces en la segunda tabla.
  • Una relación uno a uno. Cada registro de la primera tabla sólo puede tener un registro coincidente en la segunda tabla y viceversa.
 

1.26.5. Descripción de la integridad referencial

El propósito de la integridad referencial es evitar los registros huérfanos y mantener las referencias sincronizadas para que esta situación hipotética no ocurra nunca.

Para aplicar la integridad referencial, es preciso habilitarla para una relación de tabla. Una vez habilitada, Access rechazará todas las operaciones que infrinjan la integridad referencial para esa relación de tabla. Esto significa que Access rechaza las actualizaciones que cambian el destino de una referencia, así como las eliminaciones que quitan el destino de una referencia. Sin embargo, es posible que tenga la necesidad por detectar un error en un registro  del campo DNI-NIE de la tabla Clientes. Para tales casos, lo que realmente necesita es que Access actualice automáticamente todas las filas afectadas como parte de una única operación. De ese modo, Access se asegura de que la actualización es completa y la base de datos no tiene un estado inconsistente con algunas filas actualizadas y otras no.

También es posible que tenga la necesidad válida de eliminar una fila y todos los registros relacionados; por ejemplo,  se desea eliminar una película  y todos los alquileres relacionados con esa película. Por ello, Access incluye la opción Eliminar en cascada los registros relacionados.

 

1.26.6. Actualizar en cascada los campos relacionados

 Esta opción permite que, al modificar un dato en el campo común de la tabla principal,  el programa actualice, en cascada, el mismo dato en los campos comunes de las tablas relacionadas; éste es el modo de garantizar el mantenimiento de la relación.

 

1.26.7. Eliminar en cascada con los campos relacionados

Al activar esta opción se consigue que, al borrar un registro de la tabla primaria, el programa borra todos los registros que estén relacionados de la tabla relacionada.

 

1.26.8. Modificar una relación

1/\    En la ficha Herramientas de base de datos, en el grupo Relaciones, clic en Relaciones.

2/\    En el grupo Relaciones de la ficha Diseño, clic en Todas las relaciones.

3/\    Clic en la línea de relación correspondiente a la relación que desee modificar. La línea de relación aparece con mayor grosor cuando está seleccionada.

4/\    Doble clic sobre la línea. aparecerá el cuadro de diálogo Modificar relaciones.

5/\    Establecer los valores que se desean

6/\    Guardar.

 

1.26.9. Eliminar una relación de tabla

Para quitar una relación de tabla, es preciso eliminar la línea de relación en la ventana Relaciones. Colocar el cursor de modo que apunte a la línea de relación y, a continuación, clic en la línea. La línea de relación aparece con mayor grosor cuando está seleccionada. Con la línea de relación seleccionada, presionar SUPRIMIR. Observar que si se quita una relación, también se quita la integridad referencial para esa relación si está habilitada. Como resultado, Access ya no evitará automáticamente la creación de registros huérfanos en el lado "varios" de una relación.

1/\    En la ficha Herramientas de base de datos, en el grupo Relaciones, clic en Relaciones.

2/\    En el grupo Relaciones de la ficha Diseño, clic en Todas las relaciones.

3/\    Clic en la línea de relación correspondiente a la relación que desee eliminar. La línea de relación aparece con mayor grosor cuando está seleccionada.

4/\    Presione la tecla SUPR.

5/\    Puede que Access muestre el mensaje ¿Confirma que desea eliminar de forma permanente la relación seleccionada de la base de datos? Si aparece este mensaje de confirmación, clic en Sí.

 

Si se está usando alguna de las tablas empleadas en la relación de tabla, quizás por otra persona u otro proceso, o bien, en un objeto de base de datos abierto (como puede ser un formulario), no se podrá eliminar la relación. Primero se deben cerrar todos los objetos abiertos que usen estas tablas para poder quitar la relación.

  

1.26.10. Configurar el tipo de combinación

Cuando se define una relación de tabla, los hechos referentes a la relación determinan el diseño de las consultas. Por ejemplo, si se define una relación entre dos tablas y, a continuación, se crea una consulta que use dichas tablas, Access selecciona automáticamente los campos coincidentes predeterminados basándose en los campos especificados en la relación. Se pueden invalidar los valores predeterminados iniciales en la consulta, pero los valores proporcionados por la relación suelen ser los correctos. Dado que va a hacer coincidir y combinar con frecuencia los datos de varias tablas hasta de las bases de datos más sencillas, la configuración de valores predeterminados mediante la creación de relaciones puede ahorrarle tiempo y resultarle beneficiosa.

1/\    En el cuadro de diálogo Modificar relaciones, haga clic en Tipo de combinación. Aparece el cuadro de diálogo Propiedades de la combinación.

2/\     Clic en la opción que desee y, a continuación, haga clic en Aceptar.

 

Opción

Combinación relacional

Tabla izquierda

Tabla derecha

1. Incluir sólo las filas donde los campos combinados de ambas tablas sean iguales.

Combinación interna

Filas coincidentes

Filas coincidentes

2. Incluir TODOS los registros de 'Clientes' y sólo aquellos registros de “Alquileres” donde los campos combinados sean iguales.

Combinación externa izquierda

Todas las filas

Filas coincidentes

3. Incluir TODOS los registros de “Alquileres” y sólo aquellos registros de 'Clientes' donde los campos combinados sean iguales.

Combinación externa derecha

Filas coincidentes

Todas las filas

 

Ejemplo de relaciones

 Relaciones de la base de datos Videoclub

Licencia Creative Commons