TIPOS DE RELACIONES ENTRE TABLAS DE ACCESS
Existen tres tipos de relaciones de tabla.
Una relación uno a varios
Considere una base de datos de seguimiento de pedidos que incluya una tabla Clientes y una tabla Pedidos. Un cliente puede realizar cualquier número de pedidos. Por lo tanto, para cualquier cliente representado en la tabla Clientes puede haber representados muchos pedidos en la tabla Pedidos. Por consiguiente, la relación entre la tabla Clientes y la tabla Pedidos es una relación de uno a varios.
Para representar una relación de uno a varios en el diseño de la base de datos, tome la clave principal del lado "uno" de la relación y agréguela como un campo o campos adicionales a la tabla en el lado "varios" de la relación. En este caso, por ejemplo, agregaría un nuevo campo: (el campo Id. de la tabla Clientes) a la tabla Pedidos y le denominaría Id. de cliente. Access utilizaría entonces el número de identificador del cliente de la tabla Pedidos para localizar el cliente correcto de cada producto.
Una relación de varios a varios
Considere la relación entre una tabla Productos y una tabla Pedidos. Un solo pedido puede incluir varios productos. Por otro lado, un único producto puede aparecer en muchos pedidos. Por tanto, para cada registro de la tabla Pedidos puede haber varios registros en la tabla Productos. Además, para cada registro de la tabla Productos puede haber varios registros en la tabla Pedidos. Este tipo de relación se denomina relación de varios a varios porque para un producto puede haber varios pedidos, y para un pedido puede haber varios productos. Tenga en cuenta que para detectar las relaciones de varios a varios existentes entre las tablas, es importante que considere ambas partes de la relación.
Para representar una relación de varios a varios, debe crear una tercera tabla, a menudo denominada tabla de unión, que divide la relación de varios a varios en dos relaciones uno a varios. Debe insertar la clave principal de cada una de las dos tablas en la tercera. Como resultado, la tercera tabla registra cada ocurrencia, o instancia, de la relación. Por ejemplo, la tabla Pedidos y la tabla Productos tienen una relación varios a varios que se define mediante la creación de dos relaciones uno a varios con la tabla Detalles de pedidos. Un pedido puede incluir muchos productos, y cada producto puede aparecer en muchos pedidos.
Una relación uno a uno
En 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. 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.
Descripción de la integridad referencial
Al diseñar una base de datos, se divide la información en muchas tablas basadas en temas para minimizar la redundancia de los datos. A continuación, se proporciona a Office Access 2007 los medios para recopilar de nuevo la información, colocando campos comunes en tablas relacionadas. 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 Transportistas y Pedidos y desea eliminar un transportista. Si el destinatario que desea quitar tiene pedidos en la tabla Pedidos, dichos pedidos quedarán "huérfanos" si elimina el registro Transportista. Los pedidos todavía contendrán un Id.de transportista, 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.
La integridad referencial se aplica habilitándola para una relación de tabla (vea
Exigir integridad referencial para obtener instrucciones paso a paso). 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. Sin embargo, es posible que tenga la necesidad perfectamente válida de cambiar la clave principal de un transportista 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.
También es posible que tenga la necesidad válida de eliminar una fila y todos los registros relacionados; por ejemplo, un registro Transportista y todos los pedidos relacionados de ese transportista. Por ello, Access incluye la opción Eliminar en cascada los registros relacionados. Si aplica la integridad referencial y selecciona la opción Actualizar en cascada los campos relacionados y, a continuación, elimina un registro en la parte de la clave principal de la relación, Access eliminará automáticamente todos los campos que hagan referencia a la clave principal.