1
Restricciones deRestricciones de
IntegridadIntegridad
Bases de DatosBases de Datos
IngenierIngenieríía Ta Téécnica en In...
2
UNIQUEUNIQUE
Claves PrimariasClaves Primarias 77
Otra manera de declarar una clave consiste en emplear
la palabra UNIQUE...
3
RestricciRestriccióón den de IntegInteg.. ReferRefer..
Integridad Referencial y Claves ExternasIntegridad Referencial y ...
4
ActualizarActualizar
Integridad Referencial y Claves ExternasIntegridad Referencial y Claves Externas 1919
Si se actuali...
5
CHECKCHECK
RestricciRestriccióón de Valores de Atributosn de Valores de Atributos 2525
La restricción CHECK impone una c...
6
Borrar y Modificar DominiosBorrar y Modificar Dominios
RestricciRestriccióón de Valores de Atributosn de Valores de Atri...
7
ModificarModificar
Modificar RestriccionesModificar Restricciones 3737
Es posible agregar, modificar y/o eliminar las re...
8
TemasTemas
de Discuside Discusióónn
y Ejerciciosy Ejercicios
Restricciones de IntegridadRestricciones de Integridad
Base...
Próxima SlideShare
Cargando en…5
×

Pd restricciones integridad_gris

291 visualizaciones

Publicado el

0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
291
En SlideShare
0
De insertados
0
Número de insertados
1
Acciones
Compartido
0
Descargas
8
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Pd restricciones integridad_gris

  1. 1. 1 Restricciones deRestricciones de IntegridadIntegridad Bases de DatosBases de Datos IngenierIngenieríía Ta Téécnica en Informcnica en Informáática de Sistemastica de Sistemas ProtecciProteccióónn IntroducciIntroduccióónn 22 Uno de los problemas más serios de quienes escriben aplicaciones que actualizan la Base de Datos es que una información introducida pueda ser errónea y pueda, por tanto, formar tuplas incorrectas Las Restricciones de Integridad aseguran que las modificaciones realizadas por usuarios autorizados no provocan perdidas de Consistencia Semántica Claves Primarias Integridad Referencial y Claves Externas Restricciones de Valores de Atributos Restricciones Globales Modificar Restricciones Disparadores ÍÍndicendice IntroducciIntroduccióónn 33 ClavesClaves PrimariasPrimarias Integridad y SeguridadIntegridad y Seguridad Bases de DatosBases de Datos IngenierIngenieríía Ta Téécnica en Informcnica en Informáática de Sistemastica de Sistemas Clave de una RelaciClave de una Relacióónn Claves PrimariasClaves Primarias 55 El tipo más importante de restricción de una Base de Datos es una declaración de que cierto atributo o conjunto de atributos constituye una clave de una relación Dos tuplas de una relación no pueden coincidir en el atributo o conjunto de atributos declarados como claves Hay dos formas similares: PRIMARY KEY y UNIQUE En una relación (tabla) sólo puede existir una clave primaria pero puede existir varias declaraciones “únicas” DeclaraciDeclaracióón de Clavesn de Claves Claves PrimariasClaves Primarias 66 Hay dos formas de declarar una clave primaria en la proposición CREATE TABLE que define una relación 1. Declararla en el listado del esquema relacional (válida sólo cuando la clave primaria está formada por un atributo) 2. Agregarle a la lista de elementos declarados en el esquema una declaración más que indique el atributo o conjunto de atributos que forman la clave primaria CREATE TABLE Estrellas ( nombre CHAR(30) PRIMARY KEY, dirección VARCHAR(255), … PRIMARY KEY (nombre) );
  2. 2. 2 UNIQUEUNIQUE Claves PrimariasClaves Primarias 77 Otra manera de declarar una clave consiste en emplear la palabra UNIQUE (puede aparecer donde pueda hacerlo PRIMARY KEY, tras un atributo o como elemento independiente) En una tabla puede haber varias declaraciones UNIQUE, pero sólo una clave primaria CREATE TABLE Estrellas ( nombre CHAR(30) UNIQUE, dirección VARCHAR(255) UNIQUE, … ); IntegridadIntegridad Referencial yReferencial y Claves ExternasClaves Externas Integridad y SeguridadIntegridad y Seguridad Bases de DatosBases de Datos IngenierIngenieríía Ta Téécnica en Informcnica en Informáática de Sistemastica de Sistemas DefiniciDefinicióónn Integridad Referencial y Claves ExternasIntegridad Referencial y Claves Externas 99 Se denomina Integridad Referencial a la condición que asegura que un valor que aparece en una relación para un conjunto de atributos determinados aparezca también en otra relación para un cierto conjunto de atributos (normalmente atributos de una clave primaria) Plaza Roja Vite Fingoi …nombre_sucursal… Sucursales … Av. 2 de Octubre …nombre_sucursal… Cuentas Conceptos BConceptos Báásicossicos Integridad Referencial y Claves ExternasIntegridad Referencial y Claves Externas 1010 Sean r(R) y s(S) un par de relaciones y sea r s su reunión natural Pueden existir tuplas tr de r que no se reúnan con ninguna tupla de s no hay ninguna tupla ts en s tal que tr[R∩S]=ts[R∩S] tuplas colgantes Las tuplas colgantes pueden ser aceptables o no en función del problema concreto que se esté modelando Tuplas Colgantes A la tupla con un valor de llave exterior que no aparezca en la relación referenciada se le llama tupla colgante (al igual que a las tuplas que no participan en una reunión); Las tuplas colgantes violan la integridad referencial de esta restricción de llaves exteriores EjemploEjemplo TuplasTuplas ColgantesColgantes Integridad Referencial y Claves ExternasIntegridad Referencial y Claves Externas 1111 Vite Fingoi Av. 2 de Octubre …nombre_sucursal… Cuentas Vite Fingoi …nombre_sucursal… Sucursales Vite Fingoi …nombre_sucursal… Cuentas Av. 2 de Octubre Vite Fingoi …nombre_sucursal… Sucursales Clave ExternaClave Externa Integridad Referencial y Claves ExternasIntegridad Referencial y Claves Externas 1212 Un atributo de un esquema de relación se denomina clave externa cuando es la clave primaria de otro esquema de relación Vite Fingoi Av. 2 de Octubre …nombre_sucursal… Cuentas Vite Fingoi …nombre_sucursal… Sucursales Clave PrincipalClave Externa relación referenciante relación referenciada
  3. 3. 3 RestricciRestriccióón den de IntegInteg.. ReferRefer.. Integridad Referencial y Claves ExternasIntegridad Referencial y Claves Externas 1313 Sean r(R) y s(S) dos relaciones con claves primarias Kr y Ks, respectivamente Un subconjunto α de S es una clave externa que hace referencia a Kr de la relación r si… … se exige que para cada tupla (t2) de s haya una tupla (t1) de r tal que t1[Kr]=t2[α] Las exigencias de este tipo se denominan restricciones de integridad referencial o dependencia de subconjuntos (α debe ser igual a Kr o bien α y Kr deben ser compatibles) Πα(s) ⊆ ΠKr (r) GeneraciGeneracióón den de IntegInteg.. ReferRefer.. Integridad Referencial y Claves ExternasIntegridad Referencial y Claves Externas 1414 Si se obtiene el esquema de la base de datos relacional creando tablas a partir de diagramas E-R, … … cada relación que proceda de un conjunto de relaciones tendrá restricciones de integridad … cada entidad débil proporcionará restricciones de integridad Asignar Nombres a las Restricciones Conviene asignarle nombre a las restricciones, aun cuando no se piense que alguna vez se necesite referirse a ellas Una vez creada una restricción sin nombre, yo no se le podrá asignar después en casa de que haya que modificarla de alguna manera DeclaraciDeclaracióón de la Restriccin de la Restriccióónn Integridad Referencial y Claves ExternasIntegridad Referencial y Claves Externas 1515 En SQL se puede declarar que un atributo o conjunto de atributos de una relación es una clave externa que hace referencia a un atributo o atributos de otra relación 1. El atributo a atributos referenciados de la segunda relación ha de declararse como clave primaria de su relación 2. Cualquier valor que aparezca en un atributo de la clave externa en la relación referenciante habrá de hacerlo en el atributo de la clave primaria de la relación referenciada (salvo NULL) IntegInteg. Referencial en SQL. Referencial en SQL Integridad Referencial y Claves ExternasIntegridad Referencial y Claves Externas 1616 Las claves externas se pueden especificar como parte de la instrucción CREATE TABLE CREATE TABLE tabla ( atributo tipo REFERENCES tabla (atributos), … PRIMARY KEY (atributos), FOREING KEY (atributos) REFERENCES tabla (atributos) …); ComprobaciComprobacióónn IntegInteg.. ReferRefer.. Integridad Referencial y Claves ExternasIntegridad Referencial y Claves Externas 1717 Cuando se realizan modificaciones de la base de datos es necesario controlar que estas modificaciones no violan las restricciones de integridad referencial Es necesario comprobar que las inserciones, los borrados y las actualizaciones no violan las restricciones de integridad que debe tener la base de datos Política por Omisión: Rechazo de las Modificaciones Política en Cascada – Política de Valor Nulo Insertar y BorrarInsertar y Borrar Integridad Referencial y Claves ExternasIntegridad Referencial y Claves Externas 1818 Si se inserta una tupla t2 en s, el sistema debe asegurar que existe una tupla t1 en r tal que t1[Kr]=t2[α] es decir, que t2[α] ∈ ΠKr (r) Si se borra una tupla t1 en r, el sistema debe calcular el conjunto de tuplas de s que hacen referencia a r σα=t1[Kr] (s) y, si este conjunto no es vacío, o bien rechazar la orden como errónea, o bien borrar las tuplas que hacen referencia a t1
  4. 4. 4 ActualizarActualizar Integridad Referencial y Claves ExternasIntegridad Referencial y Claves Externas 1919 Si se actualiza una tupla t2 de la relación s, y esta actualización modifica valores de la clave externa α, se realiza una comprobación similar a la de inserción Si se actualiza una tupla t1 de la relación r, y esta actualización modifica valores de la clave primaria Kr, se realiza una comprobación similar a la del borrado Otras PolOtras Polííticatica Integridad Referencial y Claves ExternasIntegridad Referencial y Claves Externas 2020 Política en Cascada: Cuando se elimina (actualiza) una tupla de la relación referenciada, el sistema elimina (actualiza) todas las tuplas referenciantes con ese valor en la clave externa Política de Valor Nulo: Cuando se elimina (actualiza) una tupla de la relación referenciada, el sistema incluye un valor NULL en todas las tuplas referenciantes con ese valor en la clave externa Políticas de Modificación La política por omisión para eliminaciones y actualizaciones en la relación referenciada establece los siguiente: se prohíbe la acción si y sólo si produce una o varias tuplas colgantes en la relación referenciada La política en cascada consiste en eliminar o actualizar todas las tuplas colgantes creadas La política de establecimiento a valor nulo consiste en poner en NULL la llave exterior de las tuplas colgantes PoPoííticasticas de Int.de Int. RefRef en SQLen SQL Integridad Referencial y Claves ExternasIntegridad Referencial y Claves Externas 2121 Las políticas en cascada y de valor nulo se imponen en la declaración de la clave externa CREATE TABLE tabla ( atributo tipo REFERENCES tabla (atributos) ON DELETE {CASCADE|SET NULL} ON UPDATE {CASCADE|SET NULL}, … PRIMARY KEY (atributos), FOREING KEY (atributos) REFERENCES tabla (atributos) ON DELETE {CASCADE|SET NULL} ON UPDATE {CASCADE|SET NULL} …); RestricciRestriccióónn de Valores dede Valores de AtributosAtributos Integridad y SeguridadIntegridad y Seguridad Bases de DatosBases de Datos IngenierIngenieríía Ta Téécnica en Informcnica en Informáática de Sistemastica de Sistemas Atributos y DominiosAtributos y Dominios RestricciRestriccióón de Valores de Atributosn de Valores de Atributos 2323 Un tercer e importante tipo de restricción es la que limita los valores que pueden aparecer en los componentes de algunos atributos 1. Restricción del atributo en la definición de su esquema relacional 2. Restricción de dominio, que se declara después como el dominio del atributo NOT NULLNOT NULL RestricciRestriccióón de Valores de Atributosn de Valores de Atributos 2424 La restricción de valor de atributo más simple es especificar la cláusula NOT NULL en su definición Llaves Primarias y Atributos Únicos Una declaración PRIMARY KEY es casi sinónima de una declaración UNIQUE; La diferencia más evidente consiste en que una tabla no puede tener más que una llave primaria pero varios atributos o conjuntos de atributos UNIQUE; No obstante, se dan también algunas diferencias muy sutiles En primer lugar, una llave exterior sólo puede referenciar la llave primaria de una relación En segundo lugar, normalmente el implementador del sistema de administración de la base de datos siempre podrá poner un índice en una llave declarada como llave primaria, pero exigirá al usuario poner explícitamente un índice en los otros atributos; Las tablas de la base de datos se mantienen ordenadas por su llaves primarias
  5. 5. 5 CHECKCHECK RestricciRestriccióón de Valores de Atributosn de Valores de Atributos 2525 La restricción CHECK impone una condición que han de cumplir todos los valores del atributo En la práctica, la restricción CHECK basada en atributos tiende a ser una limitación simple sobre los valores, como una enumeración de valores legales o una desigualdad aritmética Puede ser cualquier cosa que se pueda especificar en una cláusula WHERE CREATE TABLE ( genero CHAR (1) CHECK (genero IN (‘F’, ‘M’)) ); DominiosDominios RestricciRestriccióón de Valores de Atributosn de Valores de Atributos 2626 La Restricción de Dominio es una forma simple de Integridad Referencial La declaración de que un atributo pertenezca a un determinado dominio actúa como una restricción sobre los valores que puede tomar el atributo createcreate domaindomain RestricciRestriccióón de Valores de Atributosn de Valores de Atributos 2727 La cláusula CREATE DOMAIN se usa para definir nuevos dominios CREATE DOMAIN EUROS NUMERIC(12,2) CREATE DOMAIN DÓLARES NUMERIC(12,2) CREATE DOMAIN SEXO CHAR(1) ConversiConversióón de Dominion de Dominio RestricciRestriccióón de Valores de Atributosn de Valores de Atributos 2828 Los valores de un dominio de pueden convertir a otro dominio Sea el atributo A de la relación de tipo Euros CAST r.A AS Dólares lo convierte* a Dólares (*en una aplicación real se multiplicaría r.A por el factor de cambio antes de convertirlo a Dólares) Especificar PredicadosEspecificar Predicados RestricciRestriccióón de Valores de Atributosn de Valores de Atributos 2929 La cláusula CHECK permite restringir los dominios de forma muy poderosa (mucho más que lo que permiten la mayor parte de los sistemas de tipos de la mayor parte de los lenguajes de programación)… … pues permite definir un predicado que debe satisfacer cualquier valor asignado a cualquier variable cuyo tipo sea el del dominio CREATE DOMAIN sueldo-por-hora NUMERIC (5,2) CONSTRAINT comprobación-valor-sueldo CHECK (VALUE ≥ 4.00) nombre de la restricción Ejemplo checkEjemplo check RestricciRestriccióón de Valores de Atributosn de Valores de Atributos 3030 CREATE DOMAIN número-cuenta CHAR (10) CONSTRAINT comprobar-número-cuenta-nulo CHECK (VALUE NOT NULL) CREATE DOMAIN tipo_cuenta CHAR (10) CONSTRAINT comprobar-tipo-cuenta CHECK (VALUE IN (‘Corriente’,’Ahorro’)) no valores nulos limitar valores
  6. 6. 6 Borrar y Modificar DominiosBorrar y Modificar Dominios RestricciRestriccióón de Valores de Atributosn de Valores de Atributos 3131 SQL (estándar) también tiene cláusulas para borrar y/o modificar dominios declarados previamente DROP DOMAIN Euros ALTER DOMAIN Euros NUMERIC(8,1) RestriccionesRestricciones GlobalesGlobales Integridad y SeguridadIntegridad y Seguridad Bases de DatosBases de Datos IngenierIngenieríía Ta Téécnica en Informcnica en Informáática de Sistemastica de Sistemas CHECK basada enCHECK basada en TuplasTuplas Restricciones GlobalesRestricciones Globales 3333 La condición CHECK basada en tuplas limita cualquier aspecto de las tuplas de una relación CREATE TABLE estrellas ( nombre CHAR(30) UNIQUE, sexo CHAR(1), … CHECK (sexo=‘F’ OR nombre NOT LIKE ‘Sra%’) ); AsertoAserto Restricciones GlobalesRestricciones Globales 3434 Las condiciones CHECK definen un predicado que se debe cumplir en el momento de la creación o actualización de una tupla pero si la condición cambia posteriormente, el predicado no se reevalúa) Un Aserto es un predicado que expresa una condición que se desea que la base de datos satisfaga permanentemente Las restricciones de dominio y las restricciones de integridad referencial son un tipo de aserto CREATE ASSERTION nombre CHECK predicado ComprobaciComprobacióón de Asertosn de Asertos Restricciones GlobalesRestricciones Globales 3535 Cuando se crea un Aserto el sistema comprueba su validez Una vez que el aserto es válido, sólo se permiten modificaciones posteriores que no violen el aserto La elevada sobrecarga debida a la comprobación y al mantenimiento de los asertos ha llevado a su escasa implementación en los sistemas reales La forma típica del predicado de la condición CHECK de un aserto es una pertenencia al resultado de una consulta SELECT-FROM-WHERE ModificarModificar RestriccionesRestricciones Integridad y SeguridadIntegridad y Seguridad Bases de DatosBases de Datos IngenierIngenieríía Ta Téécnica en Informcnica en Informáática de Sistemastica de Sistemas
  7. 7. 7 ModificarModificar Modificar RestriccionesModificar Restricciones 3737 Es posible agregar, modificar y/o eliminar las restricciones en cualquier momento aunque para poder modificar una restricción es necesario que tenga un nombre CONSTRAINT nombre Verificación Limitada de Restricciones: ¿deficiencia o característica? ¿Por qué se permite violar las verificaciones basadas en atributos y en tuplas? Se debe a que tales restricciones pueden implementarse más eficientemente que las aserciones; En el caso de las verificaciones basadas en atributos o en tuplas, tan sólo es necesario evaluar la restricción en la tupla o tuplas que se inserten o actualicen; En cambio, las aserciones han de evaluarse siempre que cambie una de las relaciones mencionadas por ellas En tales casos, toca al diseñador de la base de datos decidir si las modificaciones adicionales justifican el mayor tiempo de ejecución de las modificaciones de la base de datos; Para garantizar la confiabilidad del código se recomiendo no utilizar verificación basada en atributos o en tuplas, cuando al hacerlo se pudiera violar la verificación ALTERALTER Modificar RestriccionesModificar Restricciones 3838 Alteración de restricciones sobre tablas ALTER TABLE nombretabla DROP CONSTRAINT nombrerestricción ALTER TABLE nombretabla ADD CONSTRAINT nombrerestricción … Alteración de restricciones de dominio ALTER DOMAIN nombredominio DROP CONSTRAINT nombrerestricción ALTER DOMAIN nombredominio ADD CONSTRAINT nombrerestricción … Alteración de asertos DROP ASSERTION nombreaserto DisparadoresDisparadores Integridad y SeguridadIntegridad y Seguridad Bases de DatosBases de Datos IngenierIngenieríía Ta Téécnica en Informcnica en Informáática de Sistemastica de Sistemas DefiniciDefinicióónn DisparadoresDisparadores 4040 Un disparador es una orden que el sistema ejecuta de manera automática como efecto secundario de una modificación de la base de datos (pero a diferencia de CHECK y asertos, no asociado a todas las modificaciones) Requisitos: 1. Especificar las condiciones en las que se va a ejecutar el disparador 1. Evento que causa la comprobación 2. Condición que se debe cumplir 2. Especificar las acciones que se van a realizar cuando se ejecute Modelo ECA: evento-condición-acción Uso de los DisparadoresUso de los Disparadores DisparadoresDisparadores 4141 Alertar a los usuarios sobre alguna operación que realizan Realizar de forma automática ciertas tareas Controlar los valores de algunos atributos Los disparadores NO realizan acciones fuera de la base de datos Disparadores en SQLDisparadores en SQL DisparadoresDisparadores 4242 Los disparadores no estaban en la norma anterior a SQL:1999 y cada sistema implementó su propia sintaxis CREATE TRIGGER nombre AFTER3 UPDATE1 OF2 atributo ON2 tabla REFERENCING NEW ROW4 as variable1 OLD ROW4 as variable2 WHEN condición órdenes a realizar FOR EACH ROW 1. Evento (insert, delete, update) 2. Especificar columna 3. Activación (before, after) 4. Referencias (old row, new row)
  8. 8. 8 TemasTemas de Discuside Discusióónn y Ejerciciosy Ejercicios Restricciones de IntegridadRestricciones de Integridad Bases de DatosBases de Datos IngenierIngenieríía Ta Téécnica en Informcnica en Informáática de Sistemastica de Sistemas Temas de DiscusiTemas de Discusióónn Temas de DiscusiTemas de Discusióón y Ejerciciosn y Ejercicios 4444 Demostrar, mediante un ejemplo, que son necesarias las aserciones y no son suficientes las restricciones de atributos y tuplas EjerciciosEjercicios Temas de DiscusiTemas de Discusióón y Ejerciciosn y Ejercicios 4545 Dado el siguiente esquema de una base de datos de batallas clases_de_barcos (clase, tipo, pais, numero_cañones, tipo_cañon, desplazamiento) barcos (nombre_barco, clase, fecha_botadura) batallas (nombre_batalla, fecha) consecuencias (nombre_barco, nombre_batalla, resultado) Escribir como restricciones las siguientes ideas: Ninguna clase de barcos puede tener cañones de un calibre mayor que 16 pulgadas Si una clase de barcos tiene más de 9 cañones, su calibre no debe rebasar las 14 pulgadas Ningún barco puede participar en una batalla antes de haber sido botado EjerciciosEjercicios Temas de DiscusiTemas de Discusióón y Ejerciciosn y Ejercicios 4646 En el ejemplo anterior escriba asertos que desarrollen las siguiente ideas Ninguna clase puede tener más de dos barcos En toda clase hay un barco con el mismo nombre de la clase No puede botarse un barco antes del que lleve el nombre de su clase

×