Definición de relaciones entre tablas en una base de datos de Access

Número KB original: 304466

Nota:

Usuario inexperto: se requieren conocimientos de la interfaz de usuario en equipos de usuario único. Este artículo solo se refiere a una base de datos de Microsoft Access (.mdb o .accdb).

Resumen

En este artículo se describe cómo definir relaciones en una base de datos de Microsoft Access. En el artículo se incluye la siguiente información:

  • Descripción de las relaciones de tablas
  • Tipos de relaciones de tablas
    • Relaciones de uno a varios
    • Relaciones de varios a varios
    • Relaciones de uno a uno
  • Definir relaciones entre tablas
    • Definir una relación de uno a varios o de uno a uno
    • Definición de una relación de varios a varios
  • Integridad de referencias
  • Actualizaciones y eliminaciones en cascada
  • Tipos de combinación

Descripción de las relaciones de tablas

En una base de datos relacional, las relaciones permiten evitar datos redundantes. Por ejemplo, si está diseñando una base de datos que realizará un seguimiento de la información sobre libros, es posible que tenga una tabla llamada "Títulos" que almacene información sobre cada libro, como el título del libro, la fecha de publicación y la editorial. También hay información que es posible que desee almacenar sobre la editorial, como el número de teléfono, la dirección y el código postal. Si almacenara toda esta información en la tabla "Títulos", el número de teléfono de la editorial se duplicaría para cada título que imprima la editorial.

Una mejor solución es almacenar la información del editor solo una vez, en una tabla separada que llamaremos "Editores". Luego, pondría un puntero en la tabla "Títulos" que hace referencia a una entrada en la tabla "Editores".

Para asegurarse de que los datos permanecen sincronizados, puede forzar la integridad de referencias entre las tablas. Las relaciones de integridad de referencias ayudan a asegurarse de que la información de una tabla coincide con la información de otra. Por ejemplo, cada libro de la tabla "Títulos" debe estar asociado a una editorial específica de la tabla "Editoriales". No se puede agregar un título a la base de datos de una editorial que no existe en la base de datos.

Las relaciones lógicas de una base de datos le permiten consultar datos de forma eficaz y crear informes.

Tipos de relaciones de tablas

Una relación funciona haciendo coincidir datos en columnas de clave, normalmente columnas (o campos) que tienen el mismo nombre en ambas tablas. En la mayoría de los casos, la relación conecta la clave principal, o la columna de identificador único para cada fila, de una tabla a un campo de otra tabla. La columna en la otra tabla se conoce como la "clave externa". Por ejemplo, si desea hacer un seguimiento de las ventas de cada título de libro, crea una relación entre la columna de clave principal (llamémosla title_ID) en la tabla "Títulos" y una columna en la tabla "Ventas" que se llama title_ID. La columna title_ID de la tabla "Ventas" es la clave extranjera.

Hay tres tipos de relaciones entre tablas. El tipo de relación que se crea depende de cómo se definan las columnas relacionadas.

Relaciones de uno a varios

Una relación de uno a varios es el tipo de relación más común. En este tipo de relación, una fila de la tabla A puede tener muchas filas coincidentes en la tabla B. Pero una fila de la tabla B solo puede tener una fila coincidente en la tabla A. Por ejemplo, las tablas "Editoriales" y "Títulos" tienen una relación de uno a varios. Es decir, cada editorial produce muchos títulos. Pero cada título proviene de una sola editorial.

Se crea una relación de uno a varios si solo una de las columnas relacionadas es una clave principal o tiene una restricción única.

En la ventana de relaciones de Access, un número 1 indica el lado de la clave principal de una relación de uno a varios. El lado de clave extranjera de una relación se indica mediante un símbolo infinito.

Captura de pantalla de un ejemplo de relaciones de uno a varios en la ventana de relaciones de Access.

Relaciones de varios a varios

En una relación de varios a varios, una fila de la tabla A puede tener muchas filas coincidentes en la tabla B y viceversa. Esta relación se crea definiendo una tercera tabla denominada tabla de conexión. La clave principal de la tabla de conexión consta de las claves extranjeras de la tabla A y de la B. Por ejemplo, la tabla "Autores" y la tabla "Títulos" tienen una relación de varios a varios que se define mediante una relación de uno a varios de cada una de estas tablas a la tabla "TítuloAutores". La clave principal de la tabla "TítuloAutores" es la combinación de la columna au_ID (la clave principal de la tabla "Autores") y la columna title_ID (la clave principal de la tabla "Títulos").

Captura de pantalla de un ejemplo de relaciones de varios a varios en la ventana de relaciones de Access.

Relaciones de uno a uno

En una relación uno a uno, una fila de la tabla A no puede tener más de una fila coincidente en la tabla B y viceversa. Se crea una relación uno a uno si ambas columnas relacionadas son claves principales o tienen restricciones únicas.

Este tipo de relación no es común porque la mayoría de la información que está relacionada de esta manera estaría en una tabla. Puede usar una relación uno a uno para realizar las siguientes acciones:

  • Divida una tabla con muchas columnas.
  • Aísle parte de una tabla por motivos de seguridad.
  • Almacene datos de corta duración y que podrían eliminarse fácilmente borrando la tabla.
  • Almacene información que solo se aplique a un subconjunto de la tabla principal.

En Access, el lado de clave principal de una relación de uno a uno se indica mediante un símbolo de clave. El lado de la clave extranjera también se indica mediante un símbolo de clave.

Definir relaciones entre tablas

Al crear una relación entre tablas, los campos relacionados no tienen que tener los mismos nombres. Pero los campos relacionados deben tener el mismo tipo de datos a menos que el campo de clave principal sea un campo Autonumeración. Puede hacer coincidir un campo Autonumeración con un campo Número solo si la propiedad FieldSize de ambos campos coincidentes es la misma. Por ejemplo, puede hacer coincidir un campo Autonumeración y un campo Número si la propiedad FieldSize de ambos campos es Entero largo. Incluso cuando ambos campos coincidentes son campos Número, deben tener la misma configuración de propiedad FieldSize.

Definir una relación de uno a varios o de uno a uno

Para crear una relación de uno a varios o de uno a uno, siga estos pasos:

  1. Cierre todas las tablas. No puede crear ni cambiar relaciones entre tablas abiertas.

  2. En Access 2002 y en Access 2003, siga estos pasos:

    1. Pulse F11 para cambiar a la ventana Base de datos.
    2. En el menú Herramientas, haga clic en Relaciones.

    En Access 2007, Access 2010 o Access 2013, haga clic en Relaciones en el grupo Mostrar/Ocultar de la pestaña Herramientas de base de datos.

  3. Si aún no ha definido ninguna relación en la base de datos, el cuadro de diálogos Mostrar tabla se mostrará automáticamente. Si desea añadir las tablas que quiere relacionar, pero el cuadro de diálogo Mostrar tabla no aparece, haga clic en Mostrar tabla en el menú Relaciones.

  4. Haga doble clic en los nombres de las tablas que desea relacionar y, luego, cierre el cuadro de diálogo Mostrar tabla. Para crear una relación entre una tabla y sí misma, agregue esa tabla dos veces.

  5. Arrastre el campo que desea relacionar de una tabla al campo relacionado de la otra tabla. Para arrastrar varios campos, presione CTRL, haga clic en cada campo y arrástrelos.

    En la mayoría de los casos, arrastre el campo de clave principal (este campo se muestra en negrita) de una tabla a un campo similar (este campo tiene con frecuencia el mismo nombre) que se denomina clave extranjera en la otra tabla.

  6. Aparece el cuadro de diálogo Editar relaciones. Asegúrese de que los nombres de campo que se muestran en las dos columnas son correctos. Puede cambiar los nombres si fuera necesario.

    Establezca las opciones de relación si fuera necesario. Si tiene que tener información sobre un elemento específico en el cuadro de diálogo Editar relaciones, haga clic en el botón con el símbolo de interrogación y, luego, en el elemento. (Estas opciones se explicarán en detalle más adelante en este artículo).

  7. Haga clic en Crear para crear la relación.

  8. Repita los pasos del 4 al 7 con cada par de tablas que desee relacionar.

    Al cerrar el cuadro de diálogo Editar relaciones, Access le preguntará si desea guardar el diseño. Tanto si guarda el diseño como si no lo hace, las relaciones que cree se guardan en la base de datos.

    Nota:

    Puede crear relaciones no solo en tablas, sino también en consultas. Pero la integridad de referencias no se aplica con las consultas.

Definición de una relación de varios a varios

Para crear una relación de varios a varios, siga estos pasos:

  1. Cree las dos tablas que tendrán una relación de varios a varios.

  2. Cree una tercera tabla. Esta es la tabla de conexión. En la tabla de conexión, agregue nuevos campos que tengan las mismas definiciones que los campos clave principales de cada tabla que creó en el paso 1. En la tabla de conexión, los campos clave principales funcionan como claves externas. Puede agregar otros campos a la tabla de conexión, de la misma manera que puede hacerlo en cualquier otra tabla.

  3. En la tabla de conexión, establezca la clave principal para incluir los campos clave principales de las otras dos tablas. Por ejemplo, en una tabla de conexión "TítuloAutores", la clave principal estaría compuesta por los campos OrderID y ProductID.

    Nota:

    Para crear una clave principal, siga estos pasos:

    1. Abra una tabla en la vista Diseño.

    2. Seleccione el campo o los campos que desea definir como clave principal. Para seleccionar un campo, haga clic en el selector de filas del campo deseado. Para seleccionar varios campos, mantenga pulsada la tecla CTRL y, luego, haga clic en el selector de filas para cada campo.

    3. En Access 2002 o en Access 2003, haga clic en Clave principal en la barra de herramientas.

      En Access 2007, haga clic en Clave principal en el grupo Herramientas en la pestaña Diseño.

      Nota:

      Si desea que el orden de los campos de una clave principal de varios campos difiera del orden de esos campos en la tabla, haga clic en Índices en la barra de herramientas para mostrar el cuadro de diálogo Índices y, luego, reordene los nombres de campo para el índice denominado PrimaryKey.

  4. Defina una relación de uno a varios entre cada tabla principal y la tabla de conexión.

Integridad de referencias

La integridad de referencias es un sistema de reglas que Access usa para asegurarse de que las relaciones entre registros de tablas relacionadas son válidas y de que no se eliminan ni cambian accidentalmente los datos relacionados. Puede establecer la integridad de referencias cuando se cumplan todas las condiciones siguientes:

  • El campo equivalente de la tabla principal es una clave principal o tiene un índice único.
  • Los campos relacionados tienen el mismo tipo de datos. Existen dos excepciones. Un campo Autonumeración puede estar relacionado con un campo Número que tiene una configuración de propiedad FieldSize de Entero largo, y un campo Autonumeración que tiene una configuración de propiedadFieldSize de identificador de replicación puede estar relacionado con un campo Número que tiene una configuración de propiedadFieldSize de identificador de replicación.
  • Ambas tablas pertenecen a la misma base de datos de Access. Si las tablas son tablas vinculadas, estas deben estar en formato Access y debe abrir la base de datos en la que se almacenan para establecer la integridad de referencias. La integridad de referencias no se puede aplicar para las tablas vinculadas de bases de datos en otros formatos.

Las siguientes reglas se aplican cuando se utiliza la integridad de referencias:

  • No puede especificar un valor en el campo de clave extranjera de la tabla relacionada que no exista en la clave principal de la tabla principal. Pero puede introducir un valor nulo en la clave extranjera. Esto especifica que los registros no están relacionados. Por ejemplo, no puede tener un pedido asignado a un cliente que no existe. Pero puede tener un pedido que no se le asigna a nadie si introduce un valor nulo en el campo CustomerID.
  • No puede eliminar un registro de una tabla principal si existen registros coincidentes en una tabla relacionada. Por ejemplo, no puede borrar el registro de un empleado de la tabla "Empleados" si hay pedidos asignados al empleado en la tabla "Pedidos".
  • No puede cambiar un valor de clave principal en la tabla principal si ese registro tiene registros relacionados. Por ejemplo, no puede modificar el ID de un empleado en la tabla "Empleados" si hay pedidos asignados a ese empleado en la tabla "Pedidos".

Actualizaciones y eliminaciones en cascada

Para las relaciones en las que se aplica la integridad de referencias puede especificar si desea que Access actualice automáticamente en cascada o elimine registros relacionados en cascada. Si establece estas opciones, se habilitan las operaciones de eliminación y actualización que normalmente se impedirían mediante reglas de integridad de referencias. Al eliminar registros o cambiar los valores de clave principal en una tabla principal, Access realiza los cambios necesarios en las tablas relacionadas para preservar la integridad de referencias.

Si hace clic para activar la casilla Actualizar en cascada los campos relacionados al definir una relación, cada vez que cambie la clave principal de un registro en la tabla principal, Microsoft Access actualiza automáticamente la clave principal al nuevo valor en todos los registros relacionados. Por ejemplo, si cambia el identificador de un cliente en la tabla "Clientes", el campo CustomerID de la tabla "Pedidos", se actualiza automáticamente para cada uno de los pedidos de ese cliente, de modo que la relación no se rompa. Acceda a actualizaciones en cascada sin mostrar ningún mensaje.

Nota:

Si la clave principal de la tabla principal es un campo Autonumeración, activar la casilla Actualizar en cascada los campos relacionados no tiene ningún efecto porque no se puede cambiar el valor en un campo Autonumeración.

Si activa la casilla Eliminar en cascada los registros relacionados al definir una relación, cada vez que elimine registros en la tabla principal, Access eliminará automáticamente los registros relacionados en la tabla relacionada. Por ejemplo, si elimina el registro de un cliente de la tabla "Clientes", todos los pedidos del cliente se eliminan automáticamente de la tabla "Pedidos". (Esto incluye registros de la tabla "Detalles de pedidos" relacionados con los registros de "Pedidos"). Al eliminar registros de un formulario o de una hoja de datos cuando la casilla Eliminar en cascada los registros relacionados está activada, Access le advierte de que los registros relacionados podrían también eliminarse. Pero al eliminar registros mediante una consulta de eliminación, Access elimina automáticamente los registros de las tablas relacionadas sin mostrar una advertencia.

Tipos de combinación

Existen tres tipos de unión principales: Se muestran en la siguiente captura de pantalla:

Captura de pantalla de Propiedades de combinación, que muestra tres tipos de combinación.

La opción 1 define una unión interna. Una combinación interna es una combinación en la que los registros de dos tablas se combinan en los resultados de una consulta solo si los valores de los campos unidos cumplen una condición especifica. En una consulta, la combinación predeterminada es una combinación interna que selecciona registros solo si los valores de los campos unidos coinciden.

La opción 2 define una unión externa de izquierda. Una combinación externa de izquierda es una combinación en la que todos los registros del lado izquierdo de la operación LEFT JOIN en la instrucción SQL de la consulta se agregan a los resultados de la consulta, incluso si no hay valores coincidentes en el campo combinado de la tabla en el lado derecho.

La opción 3 define una unión externa de derecha. Una combinación externa de derecha es una combinación en la que todos los registros del lado derecho de la operación RIGHT JOIN en la instrucción SQL de la consulta se agregan a los resultados de la consulta, incluso si no hay valores coincidentes en el campo combinado de la tabla en el lado izquierdo.