SlideShare a Scribd company logo
1 of 8
Download to read offline
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
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
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
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
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
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
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
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

More Related Content

What's hot (9)

Sql tutor
Sql tutorSql tutor
Sql tutor
 
Reglas de integridad bd relacional
Reglas de integridad bd relacionalReglas de integridad bd relacional
Reglas de integridad bd relacional
 
Modo relacional
Modo relacionalModo relacional
Modo relacional
 
Manual excel
Manual excelManual excel
Manual excel
 
Capitulo 16
Capitulo 16Capitulo 16
Capitulo 16
 
Excel
ExcelExcel
Excel
 
Excel -funciones_basicas
Excel  -funciones_basicasExcel  -funciones_basicas
Excel -funciones_basicas
 
Núcleo 3 - Normalización de Bases de datos
Núcleo 3 - Normalización de Bases de datosNúcleo 3 - Normalización de Bases de datos
Núcleo 3 - Normalización de Bases de datos
 
Programación con sql
Programación con sqlProgramación con sql
Programación con sql
 

Similar to Pd restricciones integridad_gris

El modelo relacional
El modelo relacionalEl modelo relacional
El modelo relacional
Luis Jherry
 
Integridad Y Seguridad Completo
Integridad Y Seguridad CompletoIntegridad Y Seguridad Completo
Integridad Y Seguridad Completo
Drakonis11
 
DiseñO LóGico De Bases De Datos Para El Modelo Relacional
DiseñO LóGico De Bases De Datos Para El Modelo RelacionalDiseñO LóGico De Bases De Datos Para El Modelo Relacional
DiseñO LóGico De Bases De Datos Para El Modelo Relacional
Natalia Ludeña
 
INTEGRIDAD Y SEGURIDAD
INTEGRIDAD Y SEGURIDADINTEGRIDAD Y SEGURIDAD
INTEGRIDAD Y SEGURIDAD
demoiselle
 

Similar to Pd restricciones integridad_gris (20)

Integridad
IntegridadIntegridad
Integridad
 
El modelo relacional
El modelo relacionalEl modelo relacional
El modelo relacional
 
Diseño Lógico
Diseño LógicoDiseño Lógico
Diseño Lógico
 
Diseño Lógico de la base de datos
Diseño Lógico de la base de datosDiseño Lógico de la base de datos
Diseño Lógico de la base de datos
 
Integridad Y Seguridad Completo
Integridad Y Seguridad CompletoIntegridad Y Seguridad Completo
Integridad Y Seguridad Completo
 
DiseñO LóGico De Bases De Datos Para El Modelo Relacional
DiseñO LóGico De Bases De Datos Para El Modelo RelacionalDiseñO LóGico De Bases De Datos Para El Modelo Relacional
DiseñO LóGico De Bases De Datos Para El Modelo Relacional
 
Bases de Datos Cap:III El modelo relacional
Bases de Datos Cap:III El modelo relacionalBases de Datos Cap:III El modelo relacional
Bases de Datos Cap:III El modelo relacional
 
clase 3-MODELO RELACIONAL.ppt
clase 3-MODELO RELACIONAL.pptclase 3-MODELO RELACIONAL.ppt
clase 3-MODELO RELACIONAL.ppt
 
04-SQL.pdf
04-SQL.pdf04-SQL.pdf
04-SQL.pdf
 
04-SQLBuenaPresentaciónyConceptos.pdf
04-SQLBuenaPresentaciónyConceptos.pdf04-SQLBuenaPresentaciónyConceptos.pdf
04-SQLBuenaPresentaciónyConceptos.pdf
 
Sql 04 tablas
Sql 04 tablasSql 04 tablas
Sql 04 tablas
 
Base De Datos I
Base De Datos IBase De Datos I
Base De Datos I
 
5 modelo relacional
5 modelo relacional5 modelo relacional
5 modelo relacional
 
3.4 RESTRICCIONES.pdf
3.4 RESTRICCIONES.pdf3.4 RESTRICCIONES.pdf
3.4 RESTRICCIONES.pdf
 
Restricciones bd
Restricciones bdRestricciones bd
Restricciones bd
 
INTEGRIDAD Y SEGURIDAD
INTEGRIDAD Y SEGURIDADINTEGRIDAD Y SEGURIDAD
INTEGRIDAD Y SEGURIDAD
 
Cuestiones de Repaso Capitulo 16
Cuestiones de Repaso Capitulo 16Cuestiones de Repaso Capitulo 16
Cuestiones de Repaso Capitulo 16
 
Lenguaje sql
Lenguaje sqlLenguaje sql
Lenguaje sql
 
MODELO RELACIONAL
MODELO RELACIONALMODELO RELACIONAL
MODELO RELACIONAL
 
Modelo Relacional de Bases de Datos - DECSAI
Modelo Relacional de Bases de Datos - DECSAIModelo Relacional de Bases de Datos - DECSAI
Modelo Relacional de Bases de Datos - DECSAI
 

More from Anghy Peña

Tecnicas y procedimientos de la aufditoría
Tecnicas y procedimientos de la aufditoríaTecnicas y procedimientos de la aufditoría
Tecnicas y procedimientos de la aufditoría
Anghy Peña
 
Estudio legal de la microempresa “fruti” (p2 22 05-2014)
Estudio legal de la microempresa “fruti” (p2 22 05-2014)Estudio legal de la microempresa “fruti” (p2 22 05-2014)
Estudio legal de la microempresa “fruti” (p2 22 05-2014)
Anghy Peña
 
Tasa interno de retorno
Tasa interno de retornoTasa interno de retorno
Tasa interno de retorno
Anghy Peña
 
Pedagogia uniandes.ed udocx
Pedagogia uniandes.ed udocxPedagogia uniandes.ed udocx
Pedagogia uniandes.ed udocx
Anghy Peña
 

More from Anghy Peña (9)

Anatomia peritoneo
Anatomia peritoneoAnatomia peritoneo
Anatomia peritoneo
 
Ejercicioscliente servidor
Ejercicioscliente servidorEjercicioscliente servidor
Ejercicioscliente servidor
 
Tecnicas y procedimientos de la aufditoría
Tecnicas y procedimientos de la aufditoríaTecnicas y procedimientos de la aufditoría
Tecnicas y procedimientos de la aufditoría
 
Saitel (p1 30 10-2014)
Saitel (p1 30 10-2014)Saitel (p1 30 10-2014)
Saitel (p1 30 10-2014)
 
Estudio legal de la microempresa “fruti” (p2 22 05-2014)
Estudio legal de la microempresa “fruti” (p2 22 05-2014)Estudio legal de la microempresa “fruti” (p2 22 05-2014)
Estudio legal de la microempresa “fruti” (p2 22 05-2014)
 
Tasa interno de retorno
Tasa interno de retornoTasa interno de retorno
Tasa interno de retorno
 
Pedagogia uniandes.ed udocx
Pedagogia uniandes.ed udocxPedagogia uniandes.ed udocx
Pedagogia uniandes.ed udocx
 
BASE DE DATOS
BASE DE DATOSBASE DE DATOS
BASE DE DATOS
 
Oral quiz
Oral quizOral quiz
Oral quiz
 

Pd restricciones integridad_gris

  • 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 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 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 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 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 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 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 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