Reglas de Integridad
Una base de datos contiene unos datos que, en cada momento, deben reflejar la realidad
o, más concretamente, la situación de una porción del mundo real.
Suele ser bastante frecuente que determinadas configuraciones de valores para las tuplas
de las relaciones no tengan sentido, porque no representan ninguna situación posible del
mundo real. Denominamos integridad la propiedad de los datos de corresponder a
representaciones plausibles del mundo real.
Pueden ser dos tipos
1) Las restricciones de integridad de usuario son condiciones específicas de una
base de datos concreta; es decir, son las que se deben cumplir en una base de datos
particular con unos usuarios concretos, pero que no son necesariamente relevantes
en otra base de datos.
2) Las reglas de integridad de modelo, en cambio, son condiciones más generales,
propias de un modelo de datos, y se deben cumplir en toda base de datos que siga
dicho modelo.
Las reglas de integridad de modelo
1. Regla de integridad de unicidad de la clave primaria
La regla de integridad de unicidad está relacionada con la definición de clave primaria.
Concretamente, establece que toda clave primaria que se elija para una relación no debe tener
valores repetidos
2. Regla de integridad de entidad de la clave primaria
La regla de integridad de entidad de la clave primaria dispone que los atributos
de la clave primaria de una relación no pueden tener valores nulos. Esta regla
es necesaria para que los valores de las claves primarias puedan identificar las
tuplas individuales de las relaciones. Si las claves primarias tuviesen valores
nulos, es posible que algunas tuplas no se pudieran distinguir
3. Regla de integridad referencial
La regla de integridad referencial está relacionada con el concepto de clave
foránea. Concretamente, determina que todos los valores que toma una clave
foránea deben ser valores nulos o valores que existen en la clave primaria que
referencia
4 Restricciones
La política de restricción consiste en no aceptar la operación de actualización.
Más concretamente, la restricción en caso de borrado, consiste en no permitir
borrar una tupla si tiene una clave primaria referenciada por alguna clave
foránea. De forma similar, la restricción en caso de modificación consiste en no
permitir modificar ningún atributo de la clave primaria de una tupla si tiene una
clave primaria referenciada por alguna clave foránea.
5. Actualización en cascada
La política de actualización en cascada consiste en permitir la operación de
actualización de la tupla, y en efectuar operaciones compensatorias que
propaguen en cascada la actualización a las tuplas que la referenciaban; se actúa
de este modo para mantener la integridad referencial.
6. Anulación
Esta política consiste en permitir la operación de actualización de la tupla y en
efectuar operaciones compensatorias que pongan valores nulos a los atributos
de la clave foránea de las tuplas que la referencian; esta acción se lleva a cabo
para mantener la integridad referencial
7. Regla de integridad de dominio
La regla de integridad de dominio está relacionada, como su nombre indica, con
la noción de dominio. Esta regla establece dos condiciones. La primera
condición consiste en que un valor no nulo de un atributo Ai debe pertenecer al
dominio del atributo Ai; es decir, debe pertenecer a dominio(Ai).
Transacciones
El estándar ISO define un modelo de transacciones basado en dos instrucciones SQL: COMMIT y
ROLLBACK. Una transacción es una unidad lógica de trabajo compuesta por una o más instrucciones
SQL, garantizándose que esa unidad lógica sea atómica con respecto a la recuperación. Los cambios
realizados por una transacción no son visibles para otras transacciones que se estén ejecutando
concurrentemente hasta que la transacción se complete. Toda transacción puede completarse en una
de cuatro formas distintas:
1. Una instrucción COMMIT hace que la transacción termine con éxito, con lo que los cambios
realizados en la base de datos serán permanentes. Después de COMMIT, se iniciará una
nueva transacción cuando se ejecute otra instrucción iniciadora de transacciones.
2. Una instrucción ROLLBACK aborta la transacción, deshaciendo cualesquiera cambios que
ésta hubiera efectuado. Después de ROLLBACK, dará comienzo una nueva transacción en
el momento en que se ejecute la siguiente instrucción iniciadora de transacciones.
3. Para el SQL programático (véase el Apéndice E), la terminación satisfactoria de un programa
hace que termine con éxito la transacción final, aun cuando no se haya ejecutado una
instrucción COMMIT.
4. Para el SQL programático, una terminación anormal del programa hará que se aborte la
transacción.