RELACIONES ENTRE TABLAS ACCESS

En la LECCIÓN ANTERIOR has aprendido todo lo necesario para diseñar y crear tus propias tablas de access a través de ejercicios y un proyecto base. En ESTE CAPÍTULO aprenderás lo que son, para que sirven, y que significan las relaciones entre tablas en access.

SEGUIMIENTO DEL PROYECTO DE LA BASE DE DATOS

En la lección anterior hemos dedicado varios capítulos a diseñar un proyecto base y construir las tablas necesarias para que el proyecto diseñado funcionase. Por el momento solamente hemos aprendido como se crean las tablas y como podemos configurarlas, y es momento de aprender como se unen y el porque es necesario que se unan las tablas.

Si nos fijamos en la imagen del proyecto, podemos observar que hay varias relaciones (los campos que están unidos por una flechita azul), y hasta ahora hemos aprendido que access relaciona automáticamente dos campos cuando tratamos de crear una lista de datos existentes desde otra tabla. Ahora aprenderemos a relacionar los campos que nos interesan directamente, sin listas. Este tipo de relación nos permitirá sacar datos de diferentes tablas y compaginarlos entre sí.

Las flechas de color azul muestran las relaciones que vamos a crear.
Las flechas de color azul muestran las relaciones entre tablas de access que vamos a crear.
SUBIR

¿QUÉ SON Y PARA QUÉ SIRVEN LAS RELACIONES?

Las herramientas para relacionar tablas nos permiten acceder rápidamente a la información almacenada, sin necesidad de abrir cada una de las tablas que contienen los datos. Por lo tanto, al proceso de relación podemos definirlo como: la vinculación entre dos tablas a través de un campo en común.

Para conseguir una correcta base de datos relacional es imprescindible realizar un estudio previo del diseño de la base de datos.

Para poder relacionar tablas entre sí se deberá especificar un campo en común que contenga el mismo valor en las dos tablas y dicho campo será clave principal en una de ellas. Las tablas se relacionan de dos a dos, donde una de ellas será la tabla principal (de la que parte relación) y la otra será la tabla secundaria (destino de la relación).

SUBIR

LA CARDINALIDAD

Para entender las relaciones debemos saber que datos se van a cruzar (relacionar) y con que frecuencia. Por ejemplo no es lo mismo una relación donde los datos solo se pueden cruzar una vez, que una relación donde los datos pueden cruzarse varias veces. A esta correlación le llamamos cardinalidad.
La cardinalidad de una relación puede ser de valor "0", "1" o "N" siendo esta última mayor que "1". Pero para verlo mejor, miremos la siguiente imágen con nuestro mismo proyecto.

Para saber como funcionan las relaciones debemos entender los aspectos de la cardinalidad, que nos ayudará a saber que tipo de relación necesitamos.
Para saber como funcionan las relaciones entre tablas de access debemos entender los aspectos de la cardinalidad, que nos ayudará a saber que tipo de relación necesitamos.

Como podemos ver en la imágen anterior los clientes que tienen una cardinalidad "N" son aquellos que han comprado en más de una ocasión en días diferentes. Por ejemplo podemos ver que la Sra. Elisa ha comprado en nuestra tienda el día 02/03/2019 y el día 03/03/2019. También podemos observar que los clientes marcados con cardinalidad "1" solamente han venido una vez a comprar y los clientes registrados que tienen cardinalidad "0" no han venido en este año a nuestra tienda a comprar.

CARDINALIDAD MÍNIMA Y MÁXIMA

Aunque lo que realmente nos interesa es la cardinalidad mínima y la cardinalidad máxima de una relación. Esta información nos permite deducir qué tipo de relación se establece y las posibles restricciones que se deben aplicar.

CARDINALIDAD MÍNIMA: es el mínimo número de asociaciones que una instancia (fila) de una entidad (tabla) puede presentar en una relación conocida con otra entidad...
CARDINALIDAD MÁXIMA: es el máximo número de asociaciones...

En cualquier caso las cardinalidades mínima y máxima podrán ser 0, 1 o N, como se expuso anteriormente. Las cardinalidades mínima y máxima suelen expresarse con dos números entre paréntesis separados por comas, por ejemplo (0,1) que debe entenderse como cardinalidad mínima 0 y cardinalidad máxima 1.
Las posibles cardinalidades son (0,1), (1,1), (0,n), (1,n), (m,n).

loading...
SUBIR

TIPOS DE RELACIONES

Como ya hemos explicado anteriormente uno de los objetivos de un buen diseño de base de datos es eliminar la redundancia de los datos (datos duplicados). Para lograr dicho objetivo, conviene desglosar los datos en muchas tablas basadas en temas para que cada hecho esté representado sólo una vez.

Por ejemplo: Imaginemos por un momento que tenemos dentro de la tabla CLIENTE en el campo "Codcliente" todos los registros de todos los clientes que han venido a la tienda y que en la tabla PEDIDOS en el campo "Codcliente" tuviésemos todos los registros copiados de nuevo. ¿Qué problema puede haber?.

Esto puede traer muchos errores, el primero de ellos es que cuando ingresemos un registro en el campo "Codcliente" de una tabla hay que copiarlo en la otra para tenerlo siempre registrado, y esto puede inducir a error si se registra en una pero en la otra no. El segundo problema es que creamos registros duplicados (no existe un campo origen-destino, sino que sería origen-origen) con lo que llenamos la base de datos de registros duplicados haciendo a su ves mucho menos efectiva a la hora de trabajar con la base de datos de access.

Access para evitar la duplicidad de los datos ha creado varias formas de relaciones los campos y que son los siguientes:

RELACIÓN UNO A VARIOS:

Esta relación se da cuando un registro de una tabla (tabla secundaria - destino) sólo puede estar relacionado con un único registro de la otra tabla (tabla principal - origen) y un registro de la otra tabla (tabla principal) puede tener más de un registro relacionado en la primera tabla (tabla secundaria).
Por ejemplo: Cuando relacionemos el campo "Codcliente" de la tabla CLIENTES con el campo "Codcliente" de la tabla PEDIDOS, la relación será de UNO A VARIOS. Es decir, que puede aparecer en varios registros el mismo cliente dentro de la tabla PEDIDOS (tabla destino) pero solamente puede aparecer una vez en la tabla CLIENTES (tabla origen).

Cuando la cardinalidad de una tabla es uno a varios se identifica como (1:N).
Cuando la cardinalidad de una tabla es uno a varios se identifica como (1:N).

En este ejemplo podemos detectar que la relación "UNO a VARIOS" tiene la cardinalidad 1:N, donde el cliente de la tabla CLIENTES puede hacer tantos pedidos como quiera, es decir aparecer en la tabla destino PEDIDOS tantas veces como sean necesarias.
Podemos observar que el Sr. Anastasio ha venido una vez a comprar, pero la Sra. Esmeralda ha venido dos veces y el Sr. Jean Manuel no ha venido aún a comprar desde que se registró.

RELACIÓN VARIOS A VARIOS:

Este tipo de relación se utiliza cuando un registro de una tabla puede estar relacionado con más de un registro de la otra tabla y viceversa.
Por ejemplo: Imaginemos que tenemos una tabla llamada EMPLEADOS y otra tabla llamada TAREAS. En este caso los empleados pueden designarse a realizar varias tareas así como las tareas pueden realizarlas varios empleados. Este tipo de cardinalidad se la conoce como (N:M), es decir cuando las cardinalidades máximas de cada entidad que participa en la relación es mayor que 1.

Cuando la cardinalidad de una tabla es MUCHOS a MUCHOS se identifica como (N:M) y significa que dentro de las tablas relacionadas pueden aparecer varios registros.
Cuando la cardinalidad de una tabla es MUCHOS a MUCHOS se identifica como (N:M) y significa que dentro de las tablas relacionadas pueden aparecer varios registros.

En la imagen podemos ver que hay varios empleados que realizan más de una tarea y hay varias tareas que son realizadas por varios empleados.
La empleada Anna tiene asignada la tarea en panadería y cuando no hay clientes servirá de apoyo en cajas. Así mismo podemos observar en la imagen que el puesto de ELECTRO está cubierto por varios empleados (Josema y Ricardo). En esta imagen se ha creado una relación VARIOS a VARIOS.

RELACIÓN UNO A UNO:

Este tipo de relación es donde cada registro de la primera tabla sólo puede tener un registro coincidente en la segunda tabla y viceversa. Este tipo de relación no es común porque, muy a menudo, la información relacionada de este modo se almacena en la misma tabla. Puede utilizar la relación uno a uno para dividir una tabla con muchos campos, para aislar parte de una tabla por razones de seguridad o para almacenar información que sólo se aplica a un subconjunto de la tabla principal. Cuando identifique esta relación, ambas tablas deben compartir un campo común.

Cuando la cardinalidad de una tabla es UNO a UNO se identifica como (1:1) y significa que dentro de las tablas relacionadas pueden no se pueden repetir los registros.
Cuando la cardinalidad de una tabla es UNO a UNO se identifica como (1:1) y significa que dentro de las tablas relacionadas pueden no se pueden repetir los registros.

En este ejemplo podemos observar que cada cliente tiene asignada un número de tarjeta de fidelización, y que cada tarjeta de fidelización solamente puede pertenecer a un solo cliente.

loading...
SUBIR

¿PARA QUE SON NECESARIO LAS RELACIONES?

Las relaciones de tabla informan de 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.
Por ejemplo, para devolver filas que enumeren todos los pedidos de cada cliente, deberá crear una consulta que combine la tabla Clientes con la tabla Pedidos de acuerdo con el campo Id. de cliente. En la ventana Relaciones, puede especificar manualmente los campos que desea combinar.

Sin embargo, si ya tiene definida una relación entre las tablas, Office Access suministrará la combinación predeterminada, de acuerdo con la relación de tabla existente. Además, si usa uno de los asistentes para consultas, Access utilizará la información recopilada de las relaciones de tabla ya definidas para presentarle selecciones bien fundamentadas y para rellenar de antemano los valores predeterminados de las opciones de la propiedad.(Todo esto se verá en el apartado consultas).

Las relaciones de tabla access informan de los diseños de formulario e informe: 

Al diseñar un formulario o informe, Office Access utiliza la información recopilada de las relaciones de tablas access ya definidas para presentarle selecciones bien fundamentadas y para rellenar de antemano los valores predeterminados de las opciones de la propiedad. 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 por ejemplo, un registro de un pedido que hace referencia a un registro de un cliente que no existe.

Al diseñar una base de datos, se divide la información en tablas, cada una de las cuales tiene una clave principal. A continuación, se agregan claves externas a las tablas relacionadas que hacen referencia a dichas claves principales. Estos pares de clave principal y clave externa forman la base de las relaciones de tabla access y de las consultas de varias tablas. Por lo tanto, resulta importante, que dichas referencias de clave principal y clave externa estén sincronizadas. La integridad referencial sirve para asegurarse de que las referencias permanecen sincronizadas y depende de las relaciones de tabla. (Todo esto se verá en el apartado Formularios).

loading...
SUBIR

EXIGIR INTEGRIDAD REFERENCIAL

La integridad referencial es un sistema de reglas que utiliza Access para asegurarse que las relaciones entre registros de tablas relacionadas son válidas y que no se borren o cambien datos relacionados de forma accidental.
Al exigir integridad referencial en una relación le estamos diciendo a Access que no nos deje introducir datos en la tabla secundaria si previamente no se ha introducido el registro relacionado en la tabla principal.

Por ejemplo, para representar una relación de uno a varios se toma la clave principal de la tabla "uno" y se agrega como un campo adicional a la tabla "varios". Para recopilar de nuevo los datos, Access toma el valor de la tabla "varios" y busca el valor correspondiente en la tabla "uno". De este modo los valores de la tabla "varios" hacen referencia a los valores correspondientes de la tabla "uno".

Suponga que tiene una relación de uno a varios entre las tablas CLIENTE y PEDIDOS y desea eliminar un cliente. Si el destinatario que desea quitar tiene pedidos en la tabla PEDIDOS, dichos pedidos quedarán "huérfanos" si elimina el registro del cliente. Los pedidos todavía contendrán un Id.de clente, pero el Id. ya no será válido, porque el registro al que hace referencia ya no existe. 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.

Una vez habilitada la integridad referencial, Access rechazará todas las operaciones que infrinjan la integridad referencial de esa relación de tabla.
Una vez habilitada la integridad referencial, Access rechazará todas las operaciones que infrinjan la integridad referencial de esa relación de tabla.

La integridad referencial se aplica habilitando una relación de tabla. Una vez habilitada, Access rechazará todas las operaciones que infrinjan la integridad referencial de 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.

Actualizar en cascada:

Sin embargo, es posible que tenga la necesidad perfectamente válida de cambiar la clave principal de un cliente que tiene pedidos en la tabla Pedidos. 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.

Por ello, Access incluye la opción Eliminar en cascada los registros relacionados. Cuando se aplica la integridad referencial, se selecciona la opción Actualizar en cascada los campos relacionados y, a continuación, se actualiza una clave principal, Access actualiza automáticamente todos los campos que hacen referencia a la clave principal.

La casilla Actualizar en cascada campos relacionados permite actualizar de manera automática los cambios generados en uno de los campos que interviene en la relación. Por ejemplo, si modificamos el número que identifica a un cliente en la tabla CLIENTES, este se actualizará también en la tabla PEDIDOS.

Eliminar en cascada:

Si activamos la casilla Eliminar en cascada, cuando borremos un registro que posee el campo clave, se eliminará automáticamente de las tablas que contengan este registro como clave externa. Por ejemplo, si borramos un cliente de la tabla CLIENTES, los registros que se correspondan en la tabla PEDIDOS también se eliminarán.

Activar la integridad referencial te da opción a actualizar en cascada y eliminar en cascada.
Activar la integridad referencial te da opción a actualizar en cascada y eliminar en cascada.
loading...
SUBIR

¿CÓMO CONTINUAR?

En la LECCIÓN ANTERIOR has aprendido todo lo necesario para diseñar y crear tus propias tablas de access a través de ejercicios.

En ESTE CAPÍTULO aplicamos el proyecto  a las relaciones de las tablas en access, descubriendo que son y para que las utilizamos. Has conocido los que es la cardinalidad , importante para entender las relaciones y sus tipos de relación que puede haber. Asimismo ya sabe para que son necesarias las relaciones y la importancia que tiene la activación de la integridad referencial.

En el CAPÍTULO SIGUIENTE aprenderás a crear las relaciones y las que son necesarias para nuestro proyecto.

LAS RELACIONES (ÍNDICE)
LAS RELACIONES (ÍNDICE)
RELACIÓN ENTRE TABLAS
RELACIÓN ENTRE TABLAS

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Utilizamos cookies propias y de terceros para obtener datos estadísticos de la navegación de nuestros usuarios y mejorar nuestros servicios. Si acepta o continúa navegando, consideramos que acepta su uso. Puede cambiar la configuración u obtener más información en política de cookies

ACEPTAR
Aviso de cookies