Restricciones de Integridad
• Son reglas que siempre deben cumplirse de modo de
apoyar la integridad de la base de datos.
• E.d., que la BD cumpla fielmente con el mundo
modelado.
• Proporcionan un medio de asegurar que las
modificaciones hechas a la base de datos no provoquen
la pérdida de la consistencia de los datos.
• Una BD sera consistente si satisface las reglas de
integridad definidas para ella.
• Restricciones de dominios.
• Al definir cada atributo sobre un dominio se impone una
restricción sobre el conjunto de valores permitidos para
cada atributo.
• Restricciones inherentes
• Además de las derivadas de la definición de "relación":
• Cada relación tiene un nombre y éste es distinto del
nombre de todas las demás.
• No hay dos atributos que se llamen igual.
• Tenemos que:
• En una relacion no hay dos tuplas iguales
(obligatoriedad de clave primaria).
• El orden de las tuplas no es significativo. (de arriba
hacia abajo)
• El orden de los atributos (columnas) no es significativo.
(izq a der)
• Cada atributo sólo puede tomar un único valor del
dominio, no admitiéndose por tanto los grupos
repetitivos. (son atomicos)
• Regla de integridad de entidad
• Se aplica a las claves primarias de las relaciones:
• “Ningún atributo que forme parte de la clave primaria de
una relacion puede tomar un valor nulo”.
• Restricciones de usuario (también
llamadas restricciones semánticas)
• Restricción de clave primaria (PRIMARY KEY)
• Permite declarar un atributo o conjunto de atributos
como la clave primaria de una relacion.
• Restricción de unicidad (Unique)
• Permite definir claves alternativas (los valores de uno o
varios atributos no pueden repetirse en diferentes tuplas
de una relacion)
• Restricción de obligatoriedad (NOT NULL)
• Permite declarar si uno o varios atributos de una
relacion deben tomar siempre un valor, es decir no
pueden tomar valores nulos.
• Restricción de clave ajena (FOREIGN KEY) Integridad referencial
• “Si una relacion R2 (relacion que rerefencia) tiene un
descriptor que es la clave primaria de la relacion R1
(relacion referenciada) todo valor de dicho descriptor
debe concordar con un valor de la clave primaria de R1
o ser nulo”. El descriptor es una clave foranea de la
relacion R2.
• Los atributos que son clave ajena en una relacion no
necesitan tener los mismos nombres que los atributos
de la clave primaria con la cual ellos se corresponden.
• Viene impuesta por el mundo real y es el usuario quien
la define al describir el esquema relacional.
• Es de tipo implícito: se define en el esquema y el modelo
la reconoce sin necesidad de programar ni escribir
ningún procedimiento para obligar a que se cumpla.
• EDITORIAL (NOMBRE_E, DIRECCION, CIUDAD,
PAIS) PK: NOMBRE_E
• LIBRO (CODIGO, TITULO, IDIOMA, ..., NOMBRE_E)
PK: CODIGO FK: NOMBRE_E referencia a Editorial
• El atributo nombre_e de la relación LIBRO es clave
foranea que referencia a EDITORIAL.
• Debe concordar con la clave primaria de la relación
EDITORIAL o bien ser nulo.
• Los libros de nuestra BD deberán pertenecer a una
editorial existente, o si se desconoce la editorial, no se
tendrá ningún valor para este atributo.
• AUTOR (NOMBRE, NACIONALIDAD, INSTITUCION, ..)
PK: NOMBRE
• LIBRO (CODIGO, TITULO, IDIOMA, EDITORIAL, ...)
PK: CODIGO
• ESCRIBE (NOMBRE, COD LIBRO) PK:
NOMBRE+CODIGO FK: NOMBRE referencia a Autor,
CODIGO referencia a Libro
• La relación ESCRIBE posee dos claves foraneas:
nombre, que referencia a la relación AUTOR, y
cod_libro, que referencia a la relación LIBRO.
• Ninguna de las dos claves ajenas puede tomar valores
nulos, ya que forman parte de la clave primaria de la
relación ESCRIBE.
• El modelo relacional permite tambien definir las
opciones de borrado y modificacion en las claves
ajenas.
• Indican las acciones que hay que llevar a cabo cuando
se produce un borrado o modificacion de una tupla en la
relacion padre referenciada por una entidad hija.
• Operación restringida (RESTRICT): Borrar o modificar
tuplas de la relación que contiene la clave primaria
referenciada sólo se permite si no existen tuplas con
dicha clave en la relación que contiene la clave foranea.
• Ej. Para borrar una editorial de nuestra base de datos no
tendría que haber ningún libro que estuviese publicado
por dicha editorial, en caso contrario el sistema
impediría el borrado.
• Operación con transmisión en cascada (CASCADE):
El borrado o modificación de tuplas de la relación que
contiene la clave primaria referenciada lleva consigo el
borrado o modificación en cascada de las tuplas de la
relación que contienen la clave foranea.
• Ej. Al modificar el nombre de una editorial en la relación
EDITORIAL, se tendría que modificar también dicho
nombre en todos los libros de nuestra base de datos
publicados por dicha editorial.
• Ej. El borrado de un departamento supone un borrado
de todos los empleados que trabajan en él.
• Empleado (nombre, departamento, salario, fecha)
• Departamento (numero_depto, nombre)
• Operación con puesta a nulos (SET NULL): El
borrado o modificación de tuplas de la relación que
contiene la clave primaria referenciada lleva consigo
poner a nulos los valores de las claves foraneas de la
relación que referencia.
• Cuando se borra una editorial, los libros que ha
publicado dicha editorial y que se encuentran en LIBRO
se les coloque el atributo nombre_e a nulos.
• Esta opción, obviamente, sólo es posible cuando el
atributo que es clave ajena admite el valor nulo.
• Operación con puesta a valor por defecto (SET
DEFAULT): El borrado o la modificación de tuplas de la
relación que contiene la clave primaria referenciada lleva
consigo poner el valor por defecto a la clave foranea de
la relación que referencia.
• Este valor debe ser definido al momento de crear la
tabla correspondiente.
• En el ejemplo anterior, cuando se borra un determinado
departamento, es posible asignar a sus empleados a un
departamento ficticio (que debe encontrarse
evidentemente en la relacion Departamento)
• Las opciones de borrado y modificacion pueden ser
distintas para determinada clave foranea de una
relacion; por ejemplo, es posible definir el borrado en
cascada y la modificacion restringida.
• Nota: cuando las restricciones de integridad referencial
afectan a varias tablas, hay que tener en cuenta que la
combinación de opciones puede generar graves
problemas de integridad.
• Las opciones para la integridad referencial son:
•
•
•
•
•
•
•
•
B:C
B:N
B:D
B:R
M:C
M:N
M:D
M:R
Borrado en cascada
Borrado con puesta a nulos
Borrado con puesta a valor por defecto
Borrado restringido
Modificacion en cascada
Modificacion con puesta a nulos
Modificacion con puesta a valor por defecto
Modificacion restringida
• Restricciones de verificación (CHECK)
• Puede suceder que sea necesario especificar una
condicion que deben cumplir los valores de
determinados atributos de una relacion de la BD.
• Para ellos se definen las restricciones de verificación.
• Llevan implicitas un rechazo en caso de que no se
cumpla la condicion especificada y que tambien se
comprueban antes una inserción, borrado o
modificacion.
• Por ejemplo, para la relacion Empleado podria definirse
una restricción sobre el atributo salario que establezca
que “el rango del salario de un empleado puede oscilar
entre los $150.000 y los $300.000”.
• Así, si se va a insertar un empleado con un sueldo
superior o inferior, la operación se rechazaria.
• Reglas de negocio
• Además de las reglas de integridad anteriores, los
usuarios o los administradores de la base de datos
pueden imponer ciertas restricciones específicas sobre
los datos, denominadas reglas de negocio.
• Si en una oficina sólo puede haber hasta veinte
empleados, el SGBD debe dar la posibilidad al usuario
de definir una regla al respecto y debe hacerla respetar.
En este caso, no debería permitir un nuevo empleado en
una oficina que ya tiene los veinte permitidos.
• Hoy en día aún existen SGBD relacionales que no
permiten definir este tipo de restricciones ni las hacen
respetar.
Descargar

Unidad 2 parte 8 Restricciones de Integridad