Claves primarias y foráneas: uniendo tablas
- Clave primaria (primary key) : es un campo (columna) cuyos valores identifican de forma única cada registro de su tabla. No se repite nunca y no debe ser nulo. En nuestra tabla Libros , definimos IDLibro como clave primaria: cada libro tiene un código único (1, 2, 3,…). Igualmente, en una tabla Socios podríamos tener IDSocio como clave primaria para cada persona, y en una tabla Préstamos un IDPréstamo . El acceso suele usar campos autonuméricos para las claves primarias, porque garantizan unicidad sin esfuerzo.
- Clave foránea (foreign key) : es un campo en otra tabla que hace referencia a la clave primaria. Es decir, guarda un valor que corresponde a un registro de la tabla principal. Por ejemplo, en la tabla Préstamos tendremos un campo IDLibro que actúa como clave foránea apuntando al IDLibro de la tabla Libros, y un campo IDSocio que apunta al socio en la tabla Socios. Así, un registro de Préstamos podría ser “IDLibro = 3, IDSocio = 7, Fecha = 05/02/2026”, significando que el libro con ID 3 fue prestado al socio con ID 7 en esa fecha. Estos números 3 y 7 son claves foráneas que nos permiten conectar la información: mirando la tabla Libros sabremos cuál es el título con ID 3, y mirando Socios sabremos quién es el socio 7.
- Tabla Socios : lista a los usuarios de la biblioteca. Campos: IDSocio (clave primaria, autonumérico), Nombre, Apellido, Email, Teléfono, etc.
- Tabla Libros : ya creada en el artículo anterior. Campos: IDLibro (clave primaria, autonumérico), Título, Autor, Año, Categoría, Disponible (Sí/No).
- Tabla Préstamos : registra cada préstamo realizado. Campos: IDPréstamo (clave primaria, autonumérico), IDLibro (clave foránea a Libros), IDSocio (clave foránea a Socios), FechaPréstamo, FechaDevolución.
Ejemplo concreto: Supongamos que la socia Ana López (que tiene IDSocio = 1) toma prestado el libro “La sombra del viento” (IDLibro = 3). En la tabla Préstamos añadimos un registro: IDPréstamo = 15, IDLibro = 3, IDSocio = 1, FechaPréstamo = 01/02/2026, FechaDevolución = (aún vacío porque no lo ha devuelto) . Gracias a esto, podemos saber que el libro 3 está prestado (poner “Disponible = No” en Libros), y también podríamos consultar qué libros tiene Ana López o quién tiene “La sombra del viento”, sin duplicar datos. Todo encaja a través de los ID.
Tipos de relaciones: uno a varios y más
- Relación Uno a Varios (1 a N) : Es la más común. Significa que un registro en la tabla A puede estar relacionado con varios registros en la tabla B. En nuestro caso, un socio (tabla Socios) puede tener varios préstamos a lo largo del tiempo en la tabla Préstamos, pero cada préstamo específico pertenece a un solo socio. Igualmente, un libro puede figurar en varios préstamos (si ha sido prestado muchas veces a lo largo de los años, aunque no simultáneamente), pero cada préstamo registra un solo libro. Tanto la relación Socios–Préstamos como Libros–Préstamos son de uno a varios: un socio -> muchos préstamos, un libro -> muchos préstamos. Este tipo de relación se representa en Access con el símbolo “1” en el lado de la tabla principal (Socios o Libros) y el símbolo de “∞” (infinito) en el lado de la tabla dependiente (Préstamos).
- Relación Uno a Uno (1 a 1) : Menos frecuentes. Cada registro de A corresponde a un único registro de B y viceversa. En una biblioteca podría usarse, por ejemplo, si tuviéramos una tabla separada para Información adicional del socio (con el mismo IDSocio) y quisiéramos mantenerla separada por privacidad; cada socio tendría una única ficha complementaria. En Access, las relaciones 1 a 1 se indican con un símbolo de llave en ambos extremos. No lo usaremos en nuestro ejemplo de préstamos, pero es bueno conocer que existe.
- Relación Varios a Varios (N a N) : En Access, esto en realidad se implementa usando dos relaciones 1 a N con una tabla intermedia . Por ejemplo, si quisiéramos relacionar Libros y Autores : un autor puede escribir varios libros y un libro puede tener varios autores – esto es N a N. Para manejarlo en Access, tendríamos una tabla intermedia (por ejemplo, Autores_Libros ) donde cada registro vincula un autor con un libro. Esa tabla intermedia tendría una relación 1 a N con Autores y otra 1 a N con Libros. En nuestro caso de biblioteca básica no necesitamos una relación muchos a muchos, así que lo mencionamos solo como curiosidad avanzada.
Creando relaciones en Access paso a paso
- Abrir la ventana de Relaciones: En la cinta de opciones de Access, ve a la pestaña “Herramientas de base de datos” y haz clic en “Relaciones” . Aparecerá una ventana en blanco (si es la primera vez que define relaciones en esta base de datos) o con las relaciones existentes.
- Añadir las tablas a relacionar: Access te pedirá seleccionar las tablas. Elige Libros , Socios y Préstamos (selecciónalas y pulsa “Agregar” o doble clic sobre cada una) y luego cierra el cuadro de selección. Verás las tres tablas flotando en la ventana de relaciones, con sus campos listados.
- Crear la relación Socios–Préstamos: Click y arrastra el campo IDSocio desde la tabla Socios hasta el campo IDSocio de la tabla Préstamos . Suelta el botón. Acceda a mostrar el cuadro de diálogo “Editar relaciones”. Verifica que los campos emparejados son correctos: debería decir Socios.IDSocio relacionado con Préstamos.IDSocio . Antes de confirmar, marque la casilla “Exigir integridad referencial” . (Esto activa las reglas que explicaremos enseguida.) Opcionalmente, puedes marcar también “Actualizar en cascada” y “Eliminar en cascada” si quieres que Access propague cambios o eliminaciones de registros principales a los relacionados. Por ahora podemos dejarlas desmarcadas). Pulsa Crear . Acceda dibujará una línea que une Socios con Préstamos. Fíjate en los símbolos: habrá un 1 cerca de la tabla Socios y un ∞ cerca de Préstamos, indicando la relación uno a muchos.
- Crear la relación Libros–Préstamos: Repite el proceso arrastrando IDLibro desde la tabla Libros hasta el campo IDLibro en Préstamos . Confirma que empareja Libros.IDLibro con Préstamos.IDLibro , marca “Exigir integridad referencial” y haz clic en Crear. Aparecerá otra línea uniendo Libros con Préstamos, de nuevo con un 1 del lado de Libros y un ∞ del lado de Préstamos.
- Guardar el diseño de relaciones: Cierra la ventana de Relaciones. Access te preguntará si deseas guardar los cambios en el diseño de relaciones; di que sí. A partir de ahora, la base de datos “sabe” que esas tablas están vinculadas por esos campos.
Clave primaria vs clave foránea
La clave primaria identifica unívocamente cada registro en su tabla (ej: IDLibro en la tabla Libros). La clave foránea es un campo en otra tabla que referencia esa clave primaria (ej: IDLibro en Préstamos apunta al libro en la tabla Libros). Son la base de cualquier relación: como un "conector" entre tablas.
Evitar datos duplicados
Al relacionar tablas, no repetimos información . Por ejemplo, el nombre del socio aparece una sola vez en su tabla Socios, en Préstamos solo guardamos la referencia (IDSocio). Esto reduce errores y hace que la base de datos sea más ligera y coherente.
Integridad referencial
Al exigir integridad referencial , Access aplica reglas de coherencia : no puedes tener un préstamo con un SocioID que no existe en la tabla Socios, ni borrar un libro que tiene préstamos activos sin antes manejar esos préstamos. Previene "huecos" o datos huérfanos que rompen la lógica de la base de datos.
Consultas multi-tabla
Gracias a las relaciones, podrás hacer consultas que unan datos de varias tablas fácilmente. Por ejemplo, cree un listado con los libros en préstamos que tiene cada socio:
- Tabla Préstamos:
- IDSocio (clave foránea)
- IDLibro (clave foránea)
- Tabla Socios
- IDSocio – clave primaria
- Nombre del socio
- Tabla Libros
- IDLibro – clave primaria
- Título del libro
Las relaciones garantizan que Access entienda cómo juntar esa información de forma confiable.
Integridad referencial: manteniendo la coherencia de los datos
- No permitir registros huérfanos: No puedes introducir en la tabla Préstamos un ID de socio o de libro que no existe en sus tablas principales. Por ejemplo, no habría forma de tener un préstamo con SocioID = 99 si ningún socio con ID 99 está registrado en Socios. Access te lo impedirá (mostraría un error) al guardar ese registro de préstamo.
- Restricción al borrar o actualizar registros relacionados: Si intentas borrar un socio que todavía tiene préstamos registrados, Access te bloqueará esa eliminación a menos que primero elimines (o reasignes) sus préstamos. Esto evita que queden préstamos apuntando a un socio que ya no existe (¡porque lo habríamos borrado!). De forma similar, si se pretende cambiar el valor de una clave primaria involucrada en relaciones (algo poco común, pero imagina que renumeraras manualmente los IDs), Access evitará la modificación si rompe la relación, a menos que hayas marcado la opción de actualización en cascada para propagar el cambio.
¿Y ahora qué? Aprovechando las relaciones
- Podemos introducir datos con consistencia. Por ejemplo, al agregar un nuevo préstamo en la tabla Préstamos, veremos que el campo SocioID nos obligará a introducir un valor válido (podemos incluso configurar combos para elegir entre socios existentes en un formulario, lo que hace más fácil la selección). Asimismo, sabremos que el campo LibroID solo aceptará números de libro existentes.
- Podemos llevar un control del estado de los libros : el campo Disponible en la tabla Libros debería actualizarse a “No” cuando creemos un préstamo para ese libro, y de vuelta a “Sí” cuando el préstamo se devuelve (esto se puede hacer manualmente o mediante una consulta/formulario que actualice el campo, o incluso usando una consulta de actualización si quisiéramos automatizarlo).
- Podemos ejecutar consultas útiles gracias a las relaciones. Por ejemplo, podríamos confeccionar una consulta que muestre un listado de todos los libros actualmente prestados ya qué socio: esta consulta involucraría las tres tablas (Libros + Préstamos + Socios) unidas por las relaciones que definimos. Access entiende cómo unir las tablas mediante los campos comunes, así que podemos obtener un resultado combinado sin escribir fórmulas complicadas; simplemente agregamos las tablas al diseñador de consultas, arrastramos los campos, ponemos criterios si los hay, y listo (las consultas serán el tema del siguiente artículo).
- Mantenemos la integridad de la información a largo plazo : según la biblioteca crezca (más libros, más socios, más préstamos), nuestra base de datos seguirá consistente y sin duplicaciones innecesarias. Si un socio cambia de teléfono, lo actualizamos en un solo sitio (tabla Socios). Si un libro cambia de categoría, un solo cambio en la tabla Libros. En los préstamos históricos no guardamos esa información textual (teléfono, categoría…), siempre la referenciamos, así que los cambios se reflejan coherentemente cuando consultan datos relacionados.
Bibliografía y webografía
- Isaac. (2025, 3 de marzo). Cómo relacionar tablas en Access paso a paso . Mundobytes , sección Bases de Datos .
- Microsoft aprende. (sf). Definición de relaciones entre tablas en una base de datos de Access .
- Ramos, A. (2025, 18 de noviembre). ¿Qué es la integridad referencial en Access?