Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Integridad
Bases de Datos
Introducción
Indice
Introducción
Restricción de Integridad
z Definición:
Las Restricciones de integridad proporcionan un
medio de asegurar que las modificaciones hechas
a la base de datos por los usuarios no provoquen
una pérdida de la consistencia de los datos.
z Las Restricción de integridad son predicados
arbitrarios para las relaciones de la base de
datos.
Conceptos Previos
6.2.2 Modificaciones en la BD
z La Modificación de una BBDD puede ocasionar
violaciones de la integridad referencial.
z Para cada modificación en la BBDD se debe
comprobar que se verifica:
∏α(r2) ⊆ ∏K(r1)
Integridad Referencial:
Modificaciones en la BD
z Borrado: Al borrar una tupla t1 de r1, se debe calcular
el conjunto de tuplas de r2 que hacen referencia a r1.
σα = t1[k](r2)
Integridad Referencial:
Modificaciones en la BD
z Actualización: Se deben considerar dos casos distintos:
1. actualizaciones de la relación que realiza la referencia (r2)
2. actualizaciones de la relación a la que se hace referencia(r1)
Integridad Referencial:
Modificaciones en la BD
2. Si se actualiza la tupla t1 de r1, y esa actualización
modifica valores de la clave primaria, (K), se debe
realizar una comprobación parecida a la del
borrado:
σα = t1[k](r2)
6.3 Asertos
z Los asertos son predicados que expresan condiciones
que deben cumplirse dentro de la base de datos en
todo momento.
z Los asertos cubren condiciones de integridad
referencial que afectan de forma global a toda la base
de datos.
z Dado que SQL no proporciona predicados de la forma
“para todo X,P(X)”, la implementación de los asertos
se realiza aplicando la negación de los términos:
“no existe X tal que no P(X)”.
Ignacio OImeda Martos
Asertos
z Por ejemplo, queremos que la suma de todos los
importes de los préstamos de una sucursal sea menor
que la suma de todos los saldos de las cuentas de esa
sucursal.
Create assertion SumaTotal check
(not exists(Select * from sucursal
where (select sum (importe) from préstamo
where préstamo.nombre-sucursal =
sucursal.nombre-sucursal)>=
(select sum(importe) from cuenta
where préstamo.nombre-sucursal =
sucursal.nombre-sucursal)))
Asertos
• Los asertos se chequean en su creación y
posteriormente cada vez que existe una modificación.
Las modificaciones se permiten si se comprueba que
una vez hecha, el aserto se mantiene en un estado
verdadero.
• Debido a esta característica, los asertos deben ser
utilizados con especial cuidado, ya que un abuso en su
uso puede provocar una ralentización de
funcionamiento muy importante con bases de datos
grandes.
6.4 Disparadores
z Son funciones integradas dentro de la base de datos que se
ejecutan cuando se cumplen una serie de condiciones. La
definición de un disparador consta de dos partes:
– Condiciones de ejecución
– Acciones a realizar en la ejecución
z Sirven para realizar ciertas tareas de mantenimiento cuando se
dan una serie de condiciones.
z Los disparadores dependen del SGBD utilizado, y pueden tener
ámbitos de acción de columna o de tupla.
z Un disparador puede, por ejemplo, generar un registro de error en
una tabla de mantenimiento cuando se producen inserciones o
actualizaciones que violan ciertas reglas.
6.4 Disparadores
Disparadores
z Código de ejemplo
define triger descubierto on update of cuenta T
(if new T.saldo < 0
Then (insert into préstamo values
(T.nombre-sucursal, T.número-cuenta, -new
T.saldo)
insert into prestatario
(select nombre-cliente, número-cuenta
from impositor
where T.número-cuenta = depositario.número-
cuenta)
update cuenta S
set S.Saldo=0
Where S.número-cuenta = T.número-cuenta)
Disparadores
6.4.3 Cuando no usar disparadores
z Los disparadores se empleaban mucho para
proporcionar resúmenes de los datos cuando se
actualizaba una base, sin embargo, la posibilidad de
emplear vistas materializadas es más sencilla.
z También se empleaban para producir copias de la
BBDD antes de una modificación (cambio delta), los
nuevos SGBD incorporan automáticamente estas
funcionalidades.
z Hay que tener cuidado con los disparadores porque un
error en su ejecución invalida la ejecución de la orden
de modificación. Ignacio OImeda Martos