Cómo crear y gestionar relaciones de muchos a muchos en Access

Puedes pensar en los datos relacionales como un rompecabezas. Las piezas en sí mismas no ofrecen muchas pistas sobre el producto final que se revela solo después de armar cuidadosamente el rompecabezas, pieza por pieza. Los datos relacionales son como ese rompecabezas, excepto por una cosa: Access sabe exactamente qué registro coincide con otro, y unir las piezas es casi instantáneo. Las relaciones hacen que todo esto suceda detrás de escena.

La mayoría de las veces, la relación predeterminada, uno-a-muchos, funciona bien. Pero cuando la relación uno-a-muchos es insuficiente, debes determinar si la relación es uno-a-uno o muchos-a-muchos. La relación uno-a-uno es la menos común y se logra fácilmente mediante la configuración de un índice único en el campo de clave externa. La relación muchos-a-muchos requiere más trabajo, como aprenderás en este artículo.

Índice de Contenido
  1. Los tres tipos de relaciones
  2. Identificando una relación muchos-a-muchos

Los tres tipos de relaciones

Una relación es una asociación entre dos tablas que permite a Access unir datos relacionados que se almacenan en múltiples tablas. Hay muchos tipos de relaciones y Access admite tres:

  • Uno-a-muchos: es la relación más común, en la que el valor de la clave principal coincide con ninguno, uno o muchos registros en una tabla relacionada.
  • Uno-a-uno: es probablemente la menos común de las tres, donde el valor de la clave principal coincide solo con un (o ninguno) de registro. Estas relaciones casi siempre son forzadas por reglas comerciales y rara vez se desprenden naturalmente de los datos reales.
  • Muchos-a-muchos: ocurre cuando ambas tablas contienen registros que están relacionados con más de un registro. Access no admite directamente una relación muchos-a-muchos, por lo que debes crear una tercera tabla: una "tabla de asociación". Esta tabla contiene una clave principal y una clave externa para cada una de las tablas de datos. Después de desglosar la relación muchos-a-muchos, tienes dos relaciones uno-a-muchos entre la tabla de asociación y las dos tablas de datos.

Identificando una relación muchos-a-muchos

La clave para identificar una relación muchos-a-muchos es conocer tus datos; nada reemplaza la comprensión profunda de cómo todos esos datos encajan para producir los resultados necesarios. Cuanto más familiarizado estés con los datos, más fácil será identificar la relación muchos-a-muchos durante el proceso de diseño. Aquellas que te hayas perdido deberían aparecer durante el proceso de desarrollo cuando crees formularios de prototipo. Por ejemplo, después del proceso de diseño inicial de una base de datos simple para rastrear libros, es posible que tengas las especificaciones de la tabla enumeradas en Tabla A.

Tabla A

Diferencias entre las cláusulas IN y EXISTS en SQL: Cuál utilizar
Nombre de la tablaNombre del campoTipo de datos
LibrosLibroID (PK)AutoNumber
TítuloTexto
ISBNTexto
AuthorIDFKNum
AutoresAutorID (PK)AutoNumber
ApellidoTexto
NombreTexto

Además del índice clave primaria, cada tabla tiene un índice único:

  • Libros: TítuloISBN
  • Autores: ApellidoNombre

Figura A muestra la relación uno-a-muchos entre Libros y Autores.

Cómo crear y gestionar relaciones de muchos a muchos en Access - Gestión de datos | Imagen 1 Newsmatic
Figura A
Access asigna la relación uno-a-muchos predeterminada entre las dos tablas.

Figura B representa un formulario de ingreso de datos típico. (Utilizamos el asistente de AutoForm y basamos el formulario en la tabla Autores). El asistente representa automáticamente la relación uno-a-muchos en un arreglo de formulario principal/subformulario, donde el formulario principal muestra los registros del lado "uno" de la relación (la tabla Autores) y el subformulario muestra el lado "muchos" (la tabla Libros). El formulario parece poder manejar múltiples autores para el mismo libro, pero intenta ingresar los siguientes registros de libros:

  • Guía del actualizador para Microsoft Office System 2003, 0-7897-3176-2 por Mike Gunderloy y Susan Harkins
  • Automatizando Microsoft Access 2003 con VBA, 0-7897-3244-0 por Mike Gunderloy y Susan Harkins

Figura B muestra el registro para Susan Harkins después de ingresar los libros para Mike Gunderloy. Cuando intentas guardar el registro, Access muestra un error porque las entradas de libros en el subformulario violan el índice único de la tabla. (Ingresaste esos libros cuando ingresaste el registro de Mike Gunderloy).

Cómo utilizar roles de seguridad en SQL Server para proteger tus bases de datos

Como puedes ver en Figura C, Access almacena ambos nombres de autor y ambos registros de libros, pero los libros están relacionados solo con Mike Gunderloy (valor AuthorIDFK 1). No hay forma de relacionar estos dos libros con más de un autor. Sin el índice único en los campos Título e ISBN, Access almacena cada registro de libro dos veces, pero repetir los datos viola la Primera Forma Normal de normalización: debería haber solo un registro para cada libro.

Cómo crear y gestionar relaciones de muchos a muchos en Access - Gestión de datos | Imagen 2 Newsmatic
Figura B
Podrías pensar que este formulario puede manejar libros con más de un autor....

Cómo crear y gestionar relaciones de muchos a muchos en Access - Gestión de datos | Imagen 3 Newsmatic
Figura C
...Pero Access no puede relacionar los libros a un segundo autor.

Acomodar la relación muchos-a-muchos es un proceso simple de cuatro pasos:

Cómo optimizar los registros de transacciones en Microsoft SQL Server
  1. Eliminar la relación existente entre las dos tablas.
  2. Crear la tabla de asociación e incluir un campo de clave externa para ambas tablas de datos relacionadas.
  3. Crear una relación uno-a-muchos entre cada una de las tablas de datos y la clave externa correspondiente en la tabla de asociación.
  4. Eliminar el campo de clave externa en la tabla del lado "muchos" de la relación uno-a-muchos original.

Para aplicar estos pasos al ejemplo de seguimiento de libros, comienza abriendo la ventana Relaciones y eliminando la relación entre Libros y Autores. (Haz clic derecho en la línea de unión entre las dos tablas y elige Eliminar). Luego, crea una nueva tabla llamada AutoresLibrosmm, con estos tres campos:

  • AuthorBookID (AutoNumber)
  • BookIDFK (Number)
  • AuthorIDFK (Number)

(Agregar el sufijo "mm" al nombre de la tabla es una buena manera de identificarla como una tabla de asociación; "mm" significa muchos-a-muchos).

Ahora, asigna un índice multifield único tanto a los campos BookIDFK como AuthorIDFK. Abre la ventana Relaciones, agrega AutoresLibrosmm y crea las siguientes relaciones uno-a-muchos, como se muestra en Figura D:

  • Libros: BookID a AutoresLibrosmm: BookIDFK
  • Autores: AuthorID a AutoresLibrosmm: AuthorIDFK

Cierra la ventana Relaciones y guarda los cambios. Luego, abre la tabla Libros y elimina AuthorIDFK. Cierra y guarda la tabla Autores.

Cómo crear y gestionar relaciones de muchos a muchos en Access - Gestión de datos | Imagen 4 Newsmatic
Figura D
Crea las relaciones uno-a-muchos entre las dos tablas de datos y la tabla de asociación.

Cómo utilizar la recursión en T-SQL para calcular el factorial - TechRepublic

Como regla general, al adaptar una relación muchos-a-muchos mediante una tabla de asociación, deberás basar formularios en una consulta:

  • Agrega todos los campos no clave que puedas necesitar modificar o necesitar de ambas tablas "muchos" y "uno".
  • Agrega la clave externa que representa el lado "uno" desde la tabla de asociación.

Para continuar con nuestro ejemplo, crea la consulta mostrada en Figura E y guárdala como AutoresLibros. Actualmente, la consulta no muestra registros porque no hay registros en la tabla de asociación que vinculen los dos libros a ninguno de los autores. Abre AutoresLibrosmm e ingresa los dos registros que se muestran en Figura F, los cuales relacionan ambos registros de libros con el autor Mike Gunderloy.

Cómo crear y gestionar relaciones de muchos a muchos en Access - Gestión de datos | Imagen 5 Newsmatic
Figura E
Basar el nuevo formulario de ingreso de datos en esta consulta.

Cómo crear y gestionar relaciones de muchos a muchos en Access - Gestión de datos | Imagen 6 Newsmatic
Figura F
Estos dos registros vincularán ambos libros a Mike Gunderloy.

Cómo crear un formulario de entrada de datos en Microsoft Access

Utiliza el Asistente de Formulario (no el asistente de AutoForm) para basar un nuevo formulario en la consulta AutoresLibros. Incluye todos los campos y elige la vista de subformulario, como se muestra en Figura G. El formulario completado muestra correctamente al autor Mike Gunderloy como autor de ambos registros de libros.

Cómo crear y gestionar relaciones de muchos a muchos en Access - Gestión de datos | Imagen 7 Newsmatic
Figura G
El Asistente de Formulario reconoce las relaciones entre las tres tablas.

En este punto, podrías agregar fácilmente a Susan Harkins como autora de ambos registros de libro, pero aquí es donde la situación se vuelve un poco complicada, especialmente si estás convirtiendo una relación donde ya existe información. Susan Harkins ya existe en la tabla Autores; por lo tanto, al ingresar a Susan Harkins en el subformulario se generará un error de duplicados. Sin el índice único, Access te permite ingresar a Susan Harkins, creando un registro duplicado.

Una solución sencilla es convertir el campo de clave externa en el subformulario en un cuadro combinado y luego elegir un autor existente de la lista o ingresar uno nuevo. Para realizar esta tarea, abre el formulario completo en vista de diseño y cambia el control enlazado del campo de clave externa (AuthorIDFK) a un cuadro combinado. (Haz clic derecho en el control, elige Cambiar a y luego selecciona Cuadro combinado.) Establece la propiedad Origen de filas del control de cuadro combinado en la siguiente instrucción SQL:

SELECT AuthorID, Apellido, Nombre FROM Autores ORDER BY Apellido

Además, establece la propiedad Cantidad de columnas en 3. Vuelve a la vista de formulario y muestra la lista desplegable del control, como se muestra en Figura H. Selecciona a Susan Harkins y repite para el segundo registro de libro.

Decide con inteligencia: Stored procedures vs. SQL en tu código

Cómo crear y gestionar relaciones de muchos a muchos en Access - Gestión de datos | Imagen 8 Newsmatic
Figura H
Elige un autor de la lista desplegable control nuevo de cuadro combinado.

Abre las tres tablas y verás que cada autor y libro aparece solo una vez. La tabla de asociación relaciona ambos autores con ambos libros, lo que se ilustra fácilmente al ejecutar la consulta AutoresLibros que se muestra en Figura I.

Cómo crear y gestionar relaciones de muchos a muchos en Access - Gestión de datos | Imagen 9 Newsmatic
Figura I
La tabla de asociación mantiene estas relaciones.

No dejes que una relación muchos-a-muchos te confunda. Aplica las sencillas pautas presentadas en este artículo para agregar una tabla de asociación y mantener esas relaciones correctamente. Luego, simplemente aprovecha al máximo una vez que estén correctamente establecidas.

Cómo trabajar con ODBC en .NET Framework

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Gestión de datos, allí encontraras muchos artículos similares a Cómo crear y gestionar relaciones de muchos a muchos en Access , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.