Claves primarias y foráneas: uniendo tablas
- Clave primaria (primary key) : és un camp (columna) cuyos values identifican de forma única cada registre del seu tauler. No se repite nunca y no debe ser nulo. Al nostre tauler Llibres , definim IDLibro com a clau primària: cada llibre té un codi únic (1, 2, 3, …). Igualment, en una taula Socios podríem tenir IDSocio com a clau primaria per a cada persona, i en una taula Prestàm un IDPréstamo . Accedeix a utilitzar els camps autònoms per a les claus primàries, perquè garanteix la unicitat sense esforç.
- Clave foránea (clau estrangera) : és un camp en una altra taula que fa referència a la clau primària. Es decir, guarda un valor que correspon a un registre de la taula principal. Per exemple, en el tauler Tendrem un camp IDLibro que actua com a clau forana apuntant a l' IDLibro de la taula Libros, i un camp IDSocio que apunta al soci en el tauler Socios. Així, un registre de Préstamos podria ser “IDLibro = 3, IDSocio = 7, Fecha = 05/02/2026”, significant que el llibre amb ID 3 fos prestat al socio amb ID 7 en aquesta data. Aquests números 3 i 7 son claus foráneas que ens permeten connectar la informació: mirant el tauler Llibres sabrem amb el títol amb ID 3, i mirant Socios sabrem quién és el soci 7.
- Tabla Socios : lista a los usuarios de la biblioteca. Camps: IDSocio (clave primaria, autonumérico), Nombre, Apellido, Email, Telèfon, etc.
- Tabla Libros : ja creat a l'article anterior. Camps: IDLibro (clave primaria, autonumérico), Título, Autor, Año, Categoria, Disponible (Sí/No).
- Tabla Préstamos : registre cada préstamo realitzat. Camps: IDPréstamo (clave primaria, autonumérico), IDLibro (clave foránea a Libros), IDSocio (clave foránea a Socios), FechaPréstamo, FechaDevolución.
Exemple concret: Supongamos que la socia Ana López (que tiene IDSocio = 1) ha pres el libro “La sombra del viento” (IDLibro = 3). En el 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) . Gràcies a esto, podem saber que el llibre 3 està prestat (poner “Disponible = No” en Libros), i també podríem consultar quins llibres té Ana López o quién té “La sombra del viento”, sense duplicar dades. Tot encaixa a través dels DNI.
Tipus de relacions: un a diversos i més
- Relación Uno a Varios (1 a N) : Es la más común. Significa que un registre a la taula A pot estar relacionat amb diversos registres a la taula B . En el nostre cas, un soci (taula Socios) pot tenir diversos préstecs al llarg del temps al tauler Prestàm, però cada préstec específic pertany a un sol soci. Igualment, un llibre pot figurar en diversos préstecs (si ha estat prestat moltes vegades al llarg dels anys, encara que no simultàniament), però cada préstec registrat un sol llibre. Tant la relació Socios–Préstam com a Libros–Prestam son d'un a diversos: un socio -> muchos préstamos, un libro -> muchos préstamos. Aquest tipus de relació es representa en Access amb el símbol “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 freqüents. Cada registre de A correspon a un registre únic de B i viceversa. En una biblioteca podria utilitzar-se, per exemple, si us deixem una taula separada per a informació addicional del soci (amb el mateix IDSocio) i volem mantenir la separació per la privadesa; cada soci tendria una única fitxa complementària. En Access, les relacions 1 a 1 s'indiquen amb un símbol de clau en tots dos extrems. No ho usem en el nostre exemple de préstecs, però és bo conèixer que existeix.
- Relación Varios a Varios (N a N) : En Access, esto en realitat es implementa usando dos relaciones 1 a N con una tabla intermedia . Per exemple, si volem relacionar llibres i autors : un autor pot escriure diversos llibres i un llibre pot tenir diversos autors – això és N a N. Per manejar-lo en Access, tendiríem una taula intermedia (per exemple, Autores_Libros ) on cada registre vincula un autor amb un llibre. Esa taula intermedia tendria una relació 1 a N amb Autors i altra 1 a N amb Libros. En el nostre cas de biblioteca bàsica no necessitem una relació molts a molts, així que ho mencionam només com a curiositat avançada.
Creando relacions en Accés pas a pas
- Obre la ventana de Relaciones: En la cinta de opciones de Access, ve a la pestaña “Herramientas de base de datos” i haz clic en “Relaciones” . Aparecerà una finestra en blanc (si és la primera vegada que defineix les relacions en aquesta base de dades) o amb les relacions existents.
- Afegiu els taulers a relacionar: Access us pedirà seleccionar els taulers. Elige Libros , Socios y Préstamos (seleccionalas y pulsa “Agregar” o doble clic sobre cada una) y luego cierra el cuadro de selección. Ves els tres tauls flotant a la finestra de relacions, amb els seus camps llistats.
- Crear la relació Socios–Préstamos: Feu clic i arrastra el camp IDSocio des del tauler Socios hasta el campo IDSocio de la tabla Préstamos . Suelta el botó. L'accés mostrarà el quadre de diàleg “Editar relacions”. Verifica que los camps emparejados son correctos: debería decir Socios.IDSocio relacionado con Préstamos.IDSocio . Antes de confirmar, marca la casilla “Exigir integritat referencial” . (Esto activa les regles que explicarem seguides.) Opcionalment, podeu marcar també “Actualitzar en cascada” i “Eliminar en cascada” si voleu que Access propague canvis o eliminacions de registres principals als relacionats. Per ara podem deixar-nos desmarcades). Pulsa Crear . Access dibujará una línia que un 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 un a muchos.
- Crear la relació Libros–Préstamos: Repite el procés arrastrando IDLibro des del tauler Libros fins al camp IDLibro en Préstamos . Confirma que empareja Libros.IDLibro con Préstamos.IDLibro , marca “Exigir integridad referencial” i 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 et preguntarà si vols guardar els canvis en el disseny de relacions; di que sí. A partir d'ara, la base de dades “sabe” que aquests taules estan vinculades per aquests camps.
Clau primària vs clau forana
La clau primaria identifica unívocament cada registre en el seu tauler (ex: IDLibro en el tauler Llibres). La clau foránea és un camp en una altra taula que referència aquesta clau primària (ej: IDLibro en Préstamos apuntar al llibre en la taula Libros). Son la base de qualsevol relació: com un "conector" entre tauls.
Evitar dades duplicades
Al relacionar tablas, no repetimos información . Per exemple, el nom del soci apareix una sola vegada en el seu tauler Socios, en Préstamos solo guardamos la referencia (IDSocio). Això redueix els errors i fa la base de dades més lleugeres i coherents.
Integritat referencial
Al exigir integridad referencial , Access aplica regles de coherència : no podeu tenir un préstec amb un SocioID que no hi ha al tauler Socios, ni borrar un llibre que té préstecs actius sense abans manejar aquests préstecs. Previene "huecos" o dades huérfanos que rompan la lògica de la base de dades.
Consultes multitaula
Gràcies a les relacions, podreu fer consultes amb les dades de diversos taules fàcilment. Per exemple, creeu un llistat amb els llibres en préstecs que té cada soci:
- Taula Prestam:
- IDSocio (clau forana)
- IDLibro (clau forana)
- Taula Socis
- IDSocio – clau primària
- Nom del soci
- Taula de llibres
- IDLibro – clau primària
- Títol del llibre
Les relacions garanten que Access entienda com juntar aquesta informació de forma fiable.
Integridad referencial: manteniendo la coherencia de los datos
- No permet registres huérfanos: No pots introduir al tauler. Per exemple, no hauria format de tenir un préstec amb SocioID = 99 si cap soci amb ID 99 està registrat a Socios. Accediu a l'impedirà (mostraria un error) al guardar aquest registre de préstec.
- Restricció al borrar o actualitzar els registres relacionats: Si intenta borrar un soci que encara té préstecs registrats, l'accés bloquejarà aquesta eliminació a menys que primer elimines (o reassignes) els préstecs. Això evita que demanen préstecs apuntant a un soci que ja no existeix (¡porque ho hauríem borrat!). De forma similar, si pretén canviar el valor d'una clau primària involucrada en relacions (algo poc comú, però imagina que renumerarà manualment els IDs), Access evitarà la modificació si trencar la relació, a menys que hagi marcat l'opció d' actualització en cascada per propagar el canvi.
¿Y ara què? Aprovant les relacions
- Podem introduir dades amb consistencia. Per exemple, agregar un nou préstec al tauler. Prestem, veurem que el camp SocioID ens obligarà a introduir un valor vàlid (podem incloure configurar combos per triar entre els socis existents en un formulari, el que fa més fàcil la selecció). Asimisme, sabrem que el camp LibroID només acceptarà números de llibre existents.
- Podem dur a terme un control de l'estat dels llibres : el camp Disponible al tauler. Els llibres haurien d'actualitzar-se a “No” quan creem un préstamo per a aquest llibre, i de tornar a “Sí” quan el préstec es devolvi (és de poder fer manualment o mitjançant una consulta/formulari que actualitzeu el camp, o inclòs usant una consulta d'actualització si demanem automatitzar).
- Podem executar consultes útils gràcies a les relacions. Per exemple, podríem confeccionar una consulta que mostri un llistat de tots els llibres actualment prestats i quins socis: aquesta consulta involucraria els tres tabals (Libros + Préstamos + Socis) unides per les relacions que definim. Access entiende cómo unir los tablas mediante los campos comunes, así que podemos obtener un resultado combinado sin escribir complicadas fórmulas; simplement añadim els taules al dissenyador de consultes, arrastram els camps, posem criteris si els hi ha, i llestos (les consultes seran el tema del següent article).
- Mantenem la integritat de la informació a llarg termini : segons la biblioteca crezca (más llibres, més socios, més préstamos), la nostra base de dades seguirà consistents i sense duplicacions innecessàries. Si un soci canvia de telèfon, ho actualitzem en un sol lloc (taula Socios). Si un llibre canvia de categoria, un sol canvi al tauler Llibres. En els préstecs històrics no guardem aquesta informació textual (telèfon, categoria…), sempre la referència, així que els canvis es reflecteixen coherentment quan consulteu dades relacionades.
Bibliografia i webgrafia
- Isaac. (2025, 3 de març). Cómo relacionar tablas en Access pas a pas . Mundobytes , secció Bases de Dades .
- Microsoft Learn. (sf). Definició de relacions entre tauls en una base de dades de Access .
- Ramos, A. (2025, 18 de novembre). Què és la integritat referencial en Access?