Relaciones en Access 2010
Tipos de relaciones Se pueden distinguir tres tipos de relaciones: Relación Uno a Uno. Relación Uno a Varios. Relación Varios a Varios.
Relación Uno a Uno Relación Uno a Uno: Cuando un registro de una tabla solo puede estar relacionado con un único registro de la otra tabla y viceversa. Por ejemplo: tenemos dos tablas una con los datos de diferentes poblaciones y otra con una lista de alcaldes. Una población solo puede tener un alcalde, y un alcalde lo será únicamente de una población.
Uno a Varios Relación Uno a Varios: Cuando un registro de una tabla (tabla secundaria) solo puede estar relacionado con un único registro de la otra tabla (tabla principal) 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: tenemos dos tablas una con los datos de diferentes poblaciones y otra con los habitantes, una población puede tener más de un habitante, pero un habitante pertenecerá en una única población.
Varios a Varios Relación Varios a Varios: Cuando un registro de una tabla puede estar relacionado con más de un registro de la otra tabla y viceversa. Por ejemplo: tenemos dos tablas una con los datos de clientes y otra con los artículos que se venden en la empresa, una cliente podrá realizar un pedido con varios artículos, y un artículo podrá ser vendido a más de un cliente. Las relaciones Varios a Varios se suelen representar definiendo una tabla intermedia entre las dos tablas.
Análisis Analizar una pequeña base de datos para intentar entender mejor porqué son necesarias y para qué sirven las relaciones. Vamos a suponer que disponemos de las siguientes tablas en Access:
Biblioteca
Tablas
Tablas
En esa tabla el socio con DNI 111222111 tiene el nombre Alicia Marín García. Así pues sabemos que se ha prestado el libro Soy leyenda a Alicia Marín García el día 20/03/2006. De la misma forma podemos saber qué otros libros se han prestado a los socios. Según los datos que hay almacenados en la tabla Préstamos se ha realizado un préstamo del libro La máquina del tiempo (código 2) al socio Antonio García Castillo (DNI 555444555) el día 25/03/2006. Y otro préstamo se ha realizado a Laura Hernández Gutiérrez, del libro Viaje al centro de la tierra el día 26/03/2006.
Ejemplo Ahora vamos a suponer que se introduce un nuevo registro en la tabla Préstamos.
Ejemplo De la misma forma puede darse el caso de que en la tabla Préstamos aparezca el DNI de un socio que en realidad que no exista en la tabla de Socios.
Debería una base de datos permitir este tipo de situaciones? La respuesta es NO. Precisamente uno de los objetivos de las bases de datos es evitar inconsistencias en los datos almacenados y mantener la coherencia en los resultados. Para evitar este tipo de situaciones, en las bases de datos se utilizan las relaciones.
Relaciones en Access 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 la relación y la otra será la tabla secundaria destino de la relación.
Relaciones en Access Para realizar relaciones en Access hay que pulsar el icono, situado en la barra de herramientas.
Relaciones en Access A continuación aparecerá la siguiente ventana en la que tenemos que seleccionar todas las tablas que formarán parte de las relaciones a crear (debemos seleccionar las tablas y pulsar el botón Agregar ).
Ahora aparecerá la ventana de Relaciones con las tablas añadidas en el paso anterior.
Relaciones en Access Para iniciar una relación hay que seleccionar el campo de la tabla principal y arrastrarlo hasta el campo de la tabla secundaria que forma parte de la relación. Cuando se realiza una relación entre dos campos aparece el siguiente cuadro de diálogo:
Relaciones En la parte superior deben estar los nombres de las dos tablas relacionadas y debajo de éstas el nombre de los campos de relación. Ojo! siempre se deben relacionar campos que tengan el mismo tipo de datos.
Exigir integridad referencial A continuación activa el recuadro Exigir integridad referencial haciendo clic sobre éste. También puedes activar las casillas Actualizar en cascada los campos relacionados y Eliminar en cascada los registros relacionados. Hacer clic sobre el botón Crear. Se creará la relación y ésta aparecerá en la ventana de relaciones.
Notas Los campos que forman parte de una relación deben ser del mismo tipo. Por ejemplo, si en código de libro en la tabla Libros el tipo de texto es de tamaño 10 y en la tabla Préstamos es numérico, no puede realizarse la relación. Tampoco puede realizarse si, por ejemplo, en código de libro el tipo de texto es de tamaño 10 en la tabla Libros y de tamaño 15 en la tabla Préstamos.
Notas Si ahora abrimos la tabla Libros podemos observar que aparece el símbolo + al principio de cada registro de la tabla. Si pulsamos sobre dicho símbolo en alguno de los registros podremos ver el DNI del socio al que se le ha prestado el libro y la fecha de préstamo.
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.
Integridad referencial. 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 han introducido en la tabla principal.
Integridad referencial. La integridad referencial entre dos tablas debemos de indicarla en el siguiente cuadro de diálogo (aparece cuando se realiza la relación entre dos campos).
Integridad referencial. Si al hacer las relaciones entra las tablas Socios, Préstamos y Libros hemos marcado en todas ellas la opción de Exigir integridad referencial, y ahora intentamos introducir en la tabla Préstamos un libro que no existe en la tabla Libros aparecerá el siguiente mensaje de error:
Integridad referencial. De la misma forma si intentamos introducir en la tabla Préstamos un DNI que no existe, en la tabla Socios aparecerá el siguiente mensaje de error:
Conclusión Una de las ventajas de la integridad referencial es que no podemos introducir datos en la tabla secundaria si previamente no se han introducido en la tabla principal. De esta forma se evitan incoherencias y se mantiene la consistencia de la base de datos.
Actualizar registros en cascada y eliminar registros en cascada. La integridad referencial dispone de dos acciones: Actualizar registros en cascada: Cuando se cambie el valor del campo de la tabla principal, automáticamente cambiarán los valores de sus registros relacionados en la tabla secundaria
Ejemplo Por ejemplo: Si en la tabla Libros cambiamos el código del libro número 1 a 100, en la tabla Préstamos también cambiará el código del libro a 100.
Eliminar registros en cascada Cuando se elimina un registro de la tabla principal se borrarán también los registros relacionados en la tabla secundaria.
Ejemplo Si borramos en la tabla Libros el libro con código 2, éste también desaparecerá de la tabla Préstamos.
Ejercicio Aplicar todo lo visto hasta la fecha en el curso.