230 likes | 545 Views
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.
E N D
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.
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 losvalores 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 defectoa 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 Borrado en cascada • B:N Borrado con puesta a nulos • B:D Borrado con puesta a valor por defecto • B:R Borrado restringido • M:C Modificacion en cascada • M:N Modificacion con puesta a nulos • M:D Modificacion con puesta a valor por defecto • M:R 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.