Integridad referencial.

La integridad referencial es un conjunto de reglas de Access que garantizan que las
relaciones entre los registros de tablas relacionadas son válidas y que no se eliminan ni
modifican accidentalmente datos relacionados que satisfacen dicha relación. Sirve para
aumentar la seguridad en el tratamiento de los datos que coexisten entre dos tablas
relacionadas.
Se puede establecer integridad referencial cuando se cumplen todas las condiciones
siguientes:
 El campo que relaciona ambas tablas tiene que ser en la tabla principal un campo
clave (indexado si y sin duplicados) y en la otra tabla, también indexado (con o sin
duplicados según proceda).
 Los campos relacionados tienen el mismo tipo de datos, a excepción de que la
relación se establezca entre un campo de tipo Autonumérico y un campo de tipo
Numérico, siempre y cuando este último sea un Entero largo (por lo tanto los dos
campos con la misma longitud: entero largo). No se pueden relacionar un campo de
texto con uno de fecha, uno numérico con uno de texto...
 Ambas tablas deben pertenecer a la misma base de datos de Access (estar dentro
del mismo archivo .accdb).

Establecer integridad referencial.
Cuando se establece la integridad referencial (marcando la casilla pertinente en el panel de
modificar relaciones) se van a cumplir obligatoriamente, las siguientes reglas:
 No podemos introducir un valor para ese campo en la tabla relacionada si
antes no ha sido introducido en la tabla principal, es decir, no podemos tener en
la tabla de pedidos un pedido realizado por un código de cliente que no exista.
Otro ejemplo: no podemos tener o anotar en la tabla de participantes un participante con
un número de socio que no exista en la tabla relacionada de socios (habría que dar de alta
al participante previamente en la tabla socios. Una buena opción sería colocar en el
formulario de inscripciones un botón de comando que nos "lleve" y abra el formulario de
socios para poderle dar de alta. Al cerrar el formulario de socios una vez dado de alta,
regresaríamos al formulario de inscripciones y como ese nuevo socio ya existe en la tabla
de socios, nos permitiría su entrada).
No podremos introducir tampoco a un empleado un código de entidad bancaria si no se ha
introducido esa entidad previamente en la tabla entidades. No se puede asignar a un
trabajador un código de categoría si esa categoría no está dada de alta en la tabla categorías.
No se puede añadir un pedido en una tabla de pedidos de un artículo si el artículo no existe
previamente en la tabla de artículos...
 No se puede eliminar un registro de una tabla principal si existen registros
coincidentes en la tabla relacionada, no podemos eliminar un cliente que está en
la tabla de pedidos, es decir está realizando un pedido.
Otro ejemplo: No podemos eliminar un socio que está en la tabla de participaciones. No
podremos eliminar una entidad bancaria mientras existe un empleado que domicilie su
nómina por ella, no podremos eliminar una categoría profesional de la empresa mientras
algún empleado la tenga asignada. No se podría borrar un artículo mientras existen
pedidos de ese artículo en la tabla de pedidos. no se podría dar de baja un vehículo (de
una base de datos de un ayuntamiento) mientras en la tabla relacionada multas existan
multas sobre ese vehículo...
 No se puede cambiar un valor de clave principal en la tabla principal si el
registro tiene registros relacionados, siguiendo el ejemplo, no podríamos cambiar
el número de cliente en la tabla de clientes si este cliente en este momento esta
realizando un pedido, es decir está en la tabla pedidos.
Otro ejemplo: No podríamos cambiar el número de socio en la tabla de socios si este socio
en este momento esta participando en un torneo, es decir está en la tabla participaciones.
Para el resto de ejemplos propuestos, exactamente igual.
Si se quiere exigir el cumplimiento de estas reglas, hay que seleccionar la casilla de
verificación Exigir integridad referencial al crear la relación (paso 3).

Al hacerlo se activarán las dos opciones (con casilla de opción) que aparecen debajo:
 Actualizar en cascada los campos relacionados: si se activa esta opción, al
modificar el valor del campo común a ambas tablas en un registro de la tabla
principal, se actualizará dicho valor en todos los registros relacionados en la tabla
relacionada. (Si cambiamos el número de cliente en la tabla clientes, de forma
automática se cambia en todos los registros de la tabla pedidos).
 Eliminar en cascada los registros relacionados: si se activa esta opción, al borrar
un registro de la tabla principal, se borrarán todos los registros dependientes en la
tabla relacionada. (Si se elimina un cliente en la tabla clientes se eliminan de forma
automática todos los registros que tengan que ver con ese cliente en la tabla
pedidos). Esta opción es muy peligrosa ya que en Access una vez que se elimina un
registro ya no se puede volver a recuperar.
Muy Importante: Esta opción es muy arriesgada ya que en Access una vez que se elimina
un registro ya no se puede volver a recuperar. Es fundamental llevar una buena política de
copias de seguridad.
Al establecer la integridad referencial en la figura siguiente se observa que la relación es
uno (1) a varios ( ), un cliente (cuyos datos se encuentran en la tabla Clientes) puede
haber realizado varios pedidos (los datos de éstos se encuentran en la tabla Pedidos).