Sei sulla pagina 1di 24

Tema 5: Restricciones de

Integridad

Bases de Datos

Ignacio Olmeda Martos

1 Antonio Moratilla Ocaña


Dept. Ciencias de la Computación
Universidad de Alcalá
Tema 5: Restricciones de Integridad
Bases de Datos.
Ingeniería Técnica en Informática

Introducción
Indice

6.1 Restricciones de los dominios


6.2 Integridad referencial
6.3 Asertos
6.4 Disparadores

z Bibliografía: Silberschadt y otros, pp. 141-159


Ignacio OImeda Martos

2 Antonio Moratilla Ocaña


Dept. Ciencias de la Computación
Universidad de Alcalá
Tema 5: Restricciones de Integridad
Bases de Datos.
Ingeniería Técnica en Informática

Introducción

z En este tema se ataca el concepto de


Restricción de Integridad.
z Las Restricciones de Integridad, en sus
diferentes tipologías, son la base fundamental
para un correcto diseño de una Base de Datos.
z Los distintos tipos de Restricciones de
Integridad cubren aspectos tanto dentro de
una relación r dada, como entre un conjunto de
varias relaciones R.
Ignacio OImeda Martos

3 Antonio Moratilla Ocaña


Dept. Ciencias de la Computación
Universidad de Alcalá
Tema 5: Restricciones de Integridad
Bases de Datos.
Ingeniería Técnica en Informática

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.

Ignacio OImeda Martos

4 Antonio Moratilla Ocaña


Dept. Ciencias de la Computación
Universidad de Alcalá
Tema 5: Restricciones de Integridad
Bases de Datos.
Ingeniería Técnica en Informática

Conceptos Previos

z Restricciones de Integridad vistas


anteriormente:
– Declaración de claves: Conjunto de atributos que
definen una tupla de la base de datos de forma
única
– Forma de la relación: varios a varios, uno a varios,
uno a uno.

Ignacio OImeda Martos

5 Antonio Moratilla Ocaña


Dept. Ciencias de la Computación
Universidad de Alcalá
Tema 5: Restricciones de Integridad
Bases de Datos.
Ingeniería Técnica en Informática

6.1 Restricciones de los dominios


z Es el tipo de Restricción más básico
z Hace que los valores de un atributo de la base de datos estén
comprendidos entre una serie de valores definidos previamente.
z Esta Restricción tiene un ámbito interno de una relación
determinada: no se utiliza para verificar la integridad entre varias
relaciones de forma directa.
z Ejemplos de dominios básicos son:
– Numéricos enteros
– Numéricos con decimal
– Cadenas de Caracteres
– Booleanos

Ignacio OImeda Martos

6 Antonio Moratilla Ocaña


Dept. Ciencias de la Computación
Universidad de Alcalá
Tema 5: Restricciones de Integridad
Bases de Datos.
Ingeniería Técnica en Informática

Restricciones de los dominios


z Para definir nuevos dominios empleamos la cláusula create
domain:

create domain Nombre_Dominio char(10)


constraint Comprobacion_Dominio_NoNulos
check (value not null)

z Creación de un dominio de cadenas de caracteres, de un máximo


de 10 caracteres, cuyos valores no pueden ser nulos.
z La cláusula check permite restringir los dominios para que
verifiquen una condicion
z La orden constraint es opcional, se utiliza para dar a la
restricción el nombre comprobación_dominio_nonulos Ignacio OImeda Martos

7 Antonio Moratilla Ocaña


Dept. Ciencias de la Computación
Universidad de Alcalá
Tema 5: Restricciones de Integridad
Bases de Datos.
Ingeniería Técnica en Informática

Restricciones de los dominios


z Ejemplo: Creación de un dominio de cadenas de caracteres, de un
máximo de 10 caracteres, cuyos valores pueden ser exclusivamente
“Valor1” o “Valor2“

create domain Nombre_Dominio char(10)


constraint Comprobacion_Dominio_MultiValor
check (value in (“Valor1”,”Valor2”))

z La verificación de las condiciones de la validación de un dominio se


realizan antes de una actualización de una relación de la base de datos

Ignacio OImeda Martos

8 Antonio Moratilla Ocaña


Dept. Ciencias de la Computación
Universidad de Alcalá
Tema 5: Restricciones de Integridad
Bases de Datos.
Ingeniería Técnica en Informática

6.2 Integridad Referencial


z Se utiliza para asegurar la integridad de los datos
entre una relación para un conjunto de atributos
determinados respecto de otra relación con otro cierto
grupo de atributos, es decir, que los valores que
aparecen en un conjunto de atributos también
aparezcan en otra relación..
z Este tipo de integridad asegura que las relaciones
entre las distintas tablas de la base de datos pueden
ser mantenidas sin ninguna pérdida de consistencia,
pudiendo recuperarse la información mediante una
reunión natural entre dichas relaciones.
Ignacio OImeda Martos

9 Antonio Moratilla Ocaña


Dept. Ciencias de la Computación
Universidad de Alcalá
Tema 5: Restricciones de Integridad
Bases de Datos.
Ingeniería Técnica en Informática

6.2.1 Conceptos básicos

z Tuplas Colgantes: Sea un par de relaciones


r(R) y s(S), y la reunión natural entre r y s. Se
llama tupla colgante∩ a aquella tupla tr de r que
no se reúne con ninguna tupla de s.
z Es decir: No Existe ts en s tal que tr[R ∩ S] =
ts[R ∩ S]
z Dependiendo del tipo de relación modelada,
este tipo de tuplas pueden ser válidas.
Ignacio OImeda Martos

10 Antonio Moratilla Ocaña


Dept. Ciencias de la Computación
Universidad de Alcalá
Tema 5: Restricciones de Integridad
Bases de Datos.
Ingeniería Técnica en Informática

6.2.1 Conceptos básicos


z Clave Externa: Sean r1(R1) y r2(R2) dos relaciones con
las claves primarias K1 y K2 respectivamente.
z Un subconjunto α de R2∩ es una clave externa que hace
referencia a K1 de la relación r1 si se exige que para
cada t2 de r2 haya una tupla t1 de r1 tal que t1[K1] = t2[α
].
z Este tipo de condición se le denomina Restricciones
de integridad referencial.
z Para que este tipo de Restricción de integridad tenga
sentido, α debe ser igual a K1, o bien α y K1 deben ser
conjuntos compatibles de atributos.
Ignacio OImeda Martos

11 Antonio Moratilla Ocaña


Dept. Ciencias de la Computación
Universidad de Alcalá
Tema 5: Restricciones de Integridad
Bases de Datos.
Ingeniería Técnica en Informática

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)

z Inserción: Si se inserta una tupla t2 en r2, se debe


cumplir que existe una tupla t1 de r1 tal que t1[K] = t2[α],
es decir:
t2[α] ∈ ∏K(r1) Ignacio OImeda Martos

12 Antonio Moratilla Ocaña


Dept. Ciencias de la Computación
Universidad de Alcalá
Tema 5: Restricciones de Integridad
Bases de Datos.
Ingeniería Técnica en Informática

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)

z Si el conjunto es vacío, se procede al borrado, si no es


vacío, se puede elegir entre notificar un error y no
procesar la operación, o realizar un borrado del
conjunto de tuplas calculado, pudiendo producirse
borrados en cascada.
Ignacio OImeda Martos

13 Antonio Moratilla Ocaña


Dept. Ciencias de la Computación
Universidad de Alcalá
Tema 5: Restricciones de Integridad
Bases de Datos.
Ingeniería Técnica en Informática

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)

1. Si se modifica la tupla t2 de r2 y esta actualización


afecta a valores de la clave externa α se realiza una
comprobación similar al caso de la inserción. Si t’2
denota el nuevo valor de la tupla t2 se debe
comprobar:
t’2[α] ∈ ∏K(r1)

Ignacio OImeda Martos

14 Antonio Moratilla Ocaña


Dept. Ciencias de la Computación
Universidad de Alcalá
Tema 5: Restricciones de Integridad
Bases de Datos.
Ingeniería Técnica en Informática

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)

– Con t1 siendo el valor anterior a la modificación. Si


el conjunto de tuplas es vacío, se procede a la
actualización, si no, se puede dar un error o hacer
una actualización en cascada.
Ignacio OImeda Martos

15 Antonio Moratilla Ocaña


Dept. Ciencias de la Computación
Universidad de Alcalá
Tema 5: Restricciones de Integridad
Bases de Datos.
Ingeniería Técnica en Informática

6.2.3 Integridad Referencial en SQL

z La generación de claves se pueden especificar


en la sentencia create table:
– primary key Æ Clave principal
– unique Æ claves candidatas
– foreign key (campos)References
<tabla>Æ claves externas o extranjeras.
– Parámetros on delete cascade (no rechaza
el borrado) / on update cascade

Ignacio OImeda Martos

16 Antonio Moratilla Ocaña


Dept. Ciencias de la Computación
Universidad de Alcalá
Tema 5: Restricciones de Integridad
Bases de Datos.
Ingeniería Técnica en Informática

6.2.3 Integridad Referencial en SQL

z Las claves principales deben ser declaradas como no


nulas de forma forzosa (¿Cómo se reconocería una
tupla si dos de ellas tuviesen su clave principal a
NULL?ÆNo podrían ser diferenciadasÆFallo de
Integridad!!)
z Para evitar problemas de integridad, el forzar a que los
campos de clave externa sean no nulos es una
práctica común

Ignacio OImeda Martos

17 Antonio Moratilla Ocaña


Dept. Ciencias de la Computación
Universidad de Alcalá
Tema 5: Restricciones de Integridad
Bases de Datos.
Ingeniería Técnica en Informática

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

18 Antonio Moratilla Ocaña


Dept. Ciencias de la Computación
Universidad de Alcalá
Tema 5: Restricciones de Integridad
Bases de Datos.
Ingeniería Técnica en Informática

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)))

Ignacio OImeda Martos

19 Antonio Moratilla Ocaña


Dept. Ciencias de la Computación
Universidad de Alcalá
Tema 5: Restricciones de Integridad
Bases de Datos.
Ingeniería Técnica en Informática

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.

Ignacio OImeda Martos

20 Antonio Moratilla Ocaña


Dept. Ciencias de la Computación
Universidad de Alcalá
Tema 5: Restricciones de Integridad
Bases de Datos.
Ingeniería Técnica en Informática

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.

Ignacio OImeda Martos

21 Antonio Moratilla Ocaña


Dept. Ciencias de la Computación
Universidad de Alcalá
Tema 5: Restricciones de Integridad
Bases de Datos.
Ingeniería Técnica en Informática

6.4 Disparadores

6.4.1 Necesidad de los disparadores

z Los disparadores son útiles para realizar


automáticamente tareas cuando se verifican ciertas
condiciones.
z Por ejemplo, nos puede interesar que cuando un saldo
es negativo quede a cero y se genere un préstamo por
el exceso.

Ignacio OImeda Martos

22 Antonio Moratilla Ocaña


Dept. Ciencias de la Computación
Universidad de Alcalá
Tema 5: Restricciones de Integridad
Bases de Datos.
Ingeniería Técnica en Informática

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)

Ignacio OImeda Martos

23 Antonio Moratilla Ocaña


Dept. Ciencias de la Computación
Universidad de Alcalá
Tema 5: Restricciones de Integridad
Bases de Datos.
Ingeniería Técnica en Informática

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

24 Antonio Moratilla Ocaña


Dept. Ciencias de la Computación
Universidad de Alcalá

Potrebbero piacerti anche