|
Cuando se define una columna como clave
foránea, las filas de la tabla pueden contener en esa columna o
bien el valor nulo (ningún valor), o bien un valor que existe en
la otra tabla, un error sería asignar a un habitante una población
que no está en la tabla de poblaciones. Eso es lo que se denomina
integridad referencial y consiste
en que los datos que referencian otros (claves
foráneas) deben ser correctos. La integridad
referencial hace que el sistema gestor de la base de datos
se asegure de que no hayan en las claves foráneas valores que no
estén en la tabla principal.
La integridad referencial
se activa en cuanto creamos una clave foránea y a partir
de ese momento se comprueba cada vez que se modifiquen datos que puedan
alterarla.
¿ Cuándo
se pueden producir errores en los datos?
Cuando insertamos una nueva fila en la tabla
secundaria y el valor de la clave foránea no existe en la tabla
principal. insertamos un nuevo habitante y en la columna poblacion
escribimos un código de poblacion que no está en la tabla
de poblaciones (una población que no existe).
Cuando modificamos el valor de la clave principal
de un registro que tiene 'hijos', modificamos el codigo de
Valencia, sustituimos el valor que tenía (1) por un nuevo valor
(10), si Valencia tenía habitantes asignados, qué pasa con
esos habitantes, no pueden seguir teniendo el codigo de población
1 porque la población 1 ya no existe, en este caso hay dos alternativas,
no dejar cambiar el codigo de Valencia o bien cambiar el codigo de población
de todos los habitantes de Valencia y asignarles el código 10.
Cuando modificamos el valor de la clave foránea,
el nuevo valor debe existir en la tabla principal. Por ejemplo
cambiamos la población de un habitante, tenía asignada la
población 1 (porque estaba empadronado en valencia) y ahora se
le asigna la población 2 porque cambia de lugar de residencia.
La población 2 debe existir en la tabla de poblaciones.
Cuando queremos borrar una fila de la tabla principal
y ese registro tiene 'hijos', por ejemplo queremos borrar la
población 1 (Valencia) si existen habitantes asignados a la población
1, estos no se pueden quedar con el valor 1 en la columna población
porque tendrían asignada una población que no existe. En
este caso tenemos dos alternativas, no dejar borrar la población
1 de la tabla de poblaciones, o bien borrarla y poner a valor nulo el
campo poblacion de todos sus 'hijos'.
Asociada a la integridad referencial están
los conceptos de actualizar los registros en cascada y eliminar registros
en cascada.
|