Restricciones de Integridad Son reglas que siempre deben
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 R 2 (relacion que rerefencia) tiene un descriptor que es la clave primaria de la relacion R 1 (relacion referenciada) todo valor de dicho descriptor debe concordar con un valor de la clave primaria de R 1 o ser nulo”. El descriptor es una clave foranea de la relacion R 2. • 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 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 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.
- Slides: 21