Ligaduras de Integridad y Restricciones sobre la BD

Anuncio
Ligaduras de Integridad y Restricciones sobre la
BD
Carlos A. Olarte ([email protected])
Carlos A. Olarte ([email protected])
Ligaduras de Integridad y Restricciones sobre la BD
Outline
1
Introducción
2
Ligaduras de Dominio
3
Llaves Primarias
4
Llaves de Unicidad
5
Integridad Referencial
Carlos A. Olarte ([email protected])
Ligaduras de Integridad y Restricciones sobre la BD
Introducción y Motivación
Por qué se deben validar los tipos de las relaciones?
Por qué se debe validar el contenido de algunos atributos de
relaciones?
Que pasa si se inserta un valor relacionado que no existe?
Que pasa si es borrado o actualizado un valor llave que sirve
como llave foránea de otra relación?
Carlos A. Olarte ([email protected])
Ligaduras de Integridad y Restricciones sobre la BD
Ligaduras de Dominio
Permiten la verificación de los valores introducidos en la base
de datos
Permite examinar las consultas para que tengan sentido (Ej
Edad >0 xyz 0 no es válido)
Permiten realizar chequeos de tipos como en los lenguajes de
programación
Carlos A. Olarte ([email protected])
Ligaduras de Integridad y Restricciones sobre la BD
Ejemplos en SQL
Los tipos son chequeados automáticamente
Chequeo de valores: alter table X add constraint atr1 ck
check (atr1 ck in(’S’,’N’));
Chequeo de Obligatoriedad: alter table X modify atr2 not null;
Carlos A. Olarte ([email protected])
Ligaduras de Integridad y Restricciones sobre la BD
Llaves Primarias (PKs)
Se deben imponer sobre la base de datos restricciones de llave
primaria (PK) en los atributos llave de las relaciones del modelo
relacional.
Por ejemplo para el esquema Ciudad(Codigo, Nombre) se
impondrı́a la siguiente restricción:
ALTER TABLE CIUDADES
ADD CONSTRAINT CIU_CODIGO_PK
PRIMARY KEY(CODIGO);
Carlos A. Olarte ([email protected])
Ligaduras de Integridad y Restricciones sobre la BD
Valores únicos
En ocasiones es deseable que el valor de un atributo no se repita.
Si el atributo es PK, de éste chequeo se encarga la BD. De lo
contrario debe hacerse explicito por medio de una restricción de
UNIQUE .
Por ejemplo, en la relación Ciudad(Cod, Nombre) el atributo
nombre no deberı́a tener valores repetidos. Por tanto se impondrı́a
la siguiente restricción:
ALTER TABLE CIUDAD
ADD CONSTRAINT CIU_NOMBRE_UK
UNIQUE(NOMBRE);
Carlos A. Olarte ([email protected])
Ligaduras de Integridad y Restricciones sobre la BD
Integridad Referencial
Informalmente, es cuando un conjunto determinado de atributos de
una relación aparece en otra
Tupla Colgante:Se dice que tr es una tupla colgante de r si
tr ∈
/ r ./ s, es decir que no existe un ts talque
tr [R ∩ S]) = ts [R ∩ S]
Carlos A. Olarte ([email protected])
Ligaduras de Integridad y Restricciones sobre la BD
Continuación
Sea r1 (R1 ) y r2 (R2 ) dos relaciones con PKs k1 y k2 . Se dice que
un subconjunto α de R2 es una FK (Llave foránea) que hace
referencia a k1 si se exige que para cada t2 de r2 hay una tupla en
r1 talque t1 [k1] = t2 [α]
Es decir, πα (r2 ) ⊆ πk1 (r1 )
Carlos A. Olarte ([email protected])
Ligaduras de Integridad y Restricciones sobre la BD
Continuación
En SQL
Alter table X add Constraint X Y FK FOREIGN KEY (Atr1)
references Y(Atr1 Pk);
Carlos A. Olarte ([email protected])
Ligaduras de Integridad y Restricciones sobre la BD
Mantenimiento de la I.R
Al insertar: Si se inserta t2 en r2 , el SGBD debe asegurar que hay
una tupla t1 en r1 talque:
t1 [k] = t2 [α]
es decir
t2 [α] ∈ πk (r1 )
Carlos A. Olarte ([email protected])
Ligaduras de Integridad y Restricciones sobre la BD
Continuación
Al Eliminar: Se debe constatar que el conjunto de tuplas
relacionadas sea vació. De lo contrario se elimina en cascada o se
retrocede la transacción.
Carlos A. Olarte ([email protected])
Ligaduras de Integridad y Restricciones sobre la BD
Continuación
Al Actualizar: Si el atributo a modificar pertenece a la FK, se debe
realizar el mismo chequeo como en el inserción
Por otro lado, si se modifica la PK en r1 , se debe realizar una
comprobación similar a la de eliminación
Carlos A. Olarte ([email protected])
Ligaduras de Integridad y Restricciones sobre la BD
SQL
Eliminación en cascada: Alter table... references ... ON DELETE
CASCADE
Actualización en cascada: Alter table... references ... ON
UPDATE CASCADE
Todas las PK son NOT NULL
Las FK y UK pueden o no ser NOT NULL dependiendo de como
se hayan declarado.
Carlos A. Olarte ([email protected])
Ligaduras de Integridad y Restricciones sobre la BD
Descargar