Carlos A. Olarte Ligaduras de Integridad y Restricciones sobre la BD

Ligaduras de Integridad y Restricciones sobre la BD Carlos A. Olarte ([email protected]) Carlos A. Olarte ([email protected]) Ligaduras

2 downloads 108 Views 150KB Size

Story Transcript

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

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.