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´on
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´on y Motivaci´on
Por qu´e se deben validar los tipos de las relaciones? Por qu´e 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´anea de otra relaci´on?
Carlos A. Olarte (
[email protected])
Ligaduras de Integridad y Restricciones sobre la BD
Ligaduras de Dominio
Permiten la verificaci´on 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´alido) Permiten realizar chequeos de tipos como en los lenguajes de programaci´on
Carlos A. Olarte (
[email protected])
Ligaduras de Integridad y Restricciones sobre la BD
Ejemplos en SQL
Los tipos son chequeados autom´aticamente 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´on:
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 u´nicos
En ocasiones es deseable que el valor de un atributo no se repita. Si el atributo es PK, de ´este chequeo se encarga la BD. De lo contrario debe hacerse explicito por medio de una restricci´on de UNIQUE . Por ejemplo, en la relaci´on Ciudad(Cod, Nombre) el atributo nombre no deber´ıa tener valores repetidos. Por tanto se impondr´ıa la siguiente restricci´on:
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´on 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´on
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´anea) 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´on
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´on
Al Eliminar: Se debe constatar que el conjunto de tuplas relacionadas sea vaci´o. De lo contrario se elimina en cascada o se retrocede la transacci´on.
Carlos A. Olarte (
[email protected])
Ligaduras de Integridad y Restricciones sobre la BD
Continuaci´on
Al Actualizar: Si el atributo a modificar pertenece a la FK, se debe realizar el mismo chequeo como en el inserci´on Por otro lado, si se modifica la PK en r1 , se debe realizar una comprobaci´on similar a la de eliminaci´on
Carlos A. Olarte (
[email protected])
Ligaduras de Integridad y Restricciones sobre la BD
SQL
Eliminaci´on en cascada: Alter table... references ... ON DELETE CASCADE Actualizaci´on 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