Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Bases de Datos I
Cursada 2008
1
Cursada 2008
Clase 2: Restricciones de Integridad
(de dominio y referenciales)
Facultad de Ciencias ExactasUniversidad Nac. Centro de la Pcia. de Bs. As.
Una RI describe condiciones que toda instancia legal de una relación debe cumplir
descripción de estados correctos en tiempo de diseño
Inserts/deletes/updates que violen una RI deben ser rechazados.
BASES DE DATOS I
RESTRICCIONES DE INTEGRIDAD (RI)
2
ser rechazados. Se utilizan para:
Asegurar la semántica de una aplicación (ej. DNI identifica a una persona, es clave)
Prevenir las inconsistencias (ej. edad < 100; Sueldo es un valor numérico, con dos cifras decimales, NombreCarrera debe ser una de las siguientes cadenas de caracteres: ‘Sistemas’, ‘Matemática’, ‘Física’)
Tipos de RI’s: Inherentes al modelo relacional:
clave primaria, clave extranjera. Clasificación (según SQL):
de dominio (DOMAIN) de tabla asociada a atributos (CHECK)
BASES DE DATOS I
RESTRICCIONES DE INTEGRIDAD (RI)
3
de tabla asociada a atributos (CHECK) de tabla asociada a tuplas (CHECK) generales de la base de datos (ASSERTION)
Clasificación que concuerda con la estructura del modelo:atributos tuplas (conj. de atributos)
tablas (conj. de tuplas) BD (conj. de tablas)
BASES DE DATOS I
Permiten definir el conjunto de los valores válidos de un atributo
Formalmente R.A ε D, donde D dom(a). D es el dominio formal y dom(A) el dominio material o real.
RESTRICCIONES DE DOMINIO
4
Pueden definirse por comprensión D(CantMatRendidas) = {v/v ε INTEGER y v>=0 }extensión D(Carrera) = {‘Ing. Sistemas’, ‘APU’, ‘Prof. Informática’, ‘Prof. Física’}
SQL En la sentencia CREATE TABLE, los atributos se declaran como pertenecientes a ese dominio
Casos particulares NOT NULL, PRIMARY KEY, UNIQUE, DEFAULT
Su incumplimiento promueve el rechazo de la operación
CREATE DOMAIN NombreDominioAS TipoDato[DEFAULT ValorDefecto][[CONSTRAINT NbreRestriccion]
BASES DE DATOS I
RESTRICCIONES DE DOMINIO
5
[[CONSTRAINT NbreRestriccion]CHECK (Condicion);
CREATE DOMAIN ColorArcoIris AS char(15)DEFAULT ‘desconocido’CONSTRAINT color-usado CHECK (VALUE IN (‘rojo’, ‘amarillo’, ‘azul’, ‘naranja’, ‘índigo’, ‘violeta’, ‘verde’));
CREATE TABLE Pintura
BASES DE DATOS I
RESTRICCIONES DE DOMINIO (ejemplo)
DOMINIOCREATE TABLE Pintura
( PintId INTEGER,ColorPint ColorArcoIris,NroCatalogo INTEGER,Precio FLOAT,Descuento FLOAT, Caracteristica CHAR(30), …,PRIMARY KEY (PintId),…);
DOMINIO
SQL – INTEGRIDAD REFERENCIAL
Claves extranjeras cláusula FOREIGN KEY como parte de CREATE TABLE NbreTabla
sintaxis:CREATE TABLE NbreTabla. . . . . . [, FOREIGN KEY (ListaNbreColumna)
[(ListaNbreColReferenciada)]
BASES DE DATOS I
7
REFERENCES NbreTablaReferenciada [(ListaNbreColReferenciada)][ MATCH {FULL | PARTIAL | SIMPLE}][ ON DELETE { NO ACTION | RESTRICT |
CASCADE | SET NULL | SET DEFAULT}][ ON UPDATE { NO ACTION | RESTRICT |
CASCADE | SET NULL | SET DEFAULT}][, FOREIGN KEY.....]]);
Formalmente:NbreTabla[ListaNbreColumna]<<
NbreTablaReferenciada[ListaNbreColReferenciada]:(AccRefBaja, AccRefModifDer)
ListaNbreColumna es una lista de atributos que se corresponden con una clave (primaria o alternativa) de la tabla referenciada
No se requiere igualdad de nombres, pero sí compatibilidad de dominios
BASES DE DATOS I
SQL – INTEGRIDAD REFERENCIAL
8
No se requiere igualdad de nombres, pero sí compatibilidad de dominios
En caso de ambigüedad debe indicarse explícitamente las columnas referenciadas
Si la clave extranjera tiene un único dominio, puede especificarse directamente en la definición de la columna con la cláusula REFERENCES NbreTablaReferenciada
Tipos de Matching Los tipos de matching importan cuando las claves
extranjeras se definen sobre varios atributos, y pueden contener valores nulos.
BASES DE DATOS I
SQL – INTEGRIDAD REFERENCIAL
9
pueden contener valores nulos. MATCH SIMPLE MATCH PARTIAL MATCH FULL
MATCH SIMPLE: la integridad referencial se satisface si para cada tupla en la tabla referenciante se verifican las siguientes condiciones: Al menos una de las columnas en la clave extranjera
es NULL, o bien Ninguna de las columnas es NULL y existe una tupla
BASES DE DATOS I
SQL – INTEGRIDAD REFERENCIAL
10
Ninguna de las columnas es NULL y existe una tupla en la tabla referenciada cuya clave coincide con los valores de tales columnas.
Sea R[F]<<S[U]
Opción por defecto para SQL
MATCH PARTIAL: La integridad referencial se satisface si: para cada tupla de la tabla referenciante los
valores de los atributos no nulos de la clave
BASES DE DATOS I
SQL – INTEGRIDAD REFERENCIAL
11
valores de los atributos no nulos de la clave extranjera se corresponden con los correspondientes valores de la clave, al menos en una tupla de la tabla referenciada.
Sea R[F]<<S[U]
MATCH FULL: La integridad referencial se satisface si para cada tupla de la tabla referenciante, se verifica la siguiente condición: Todas las columnas de la clave extranjera son
NULL, o bienNinguna es NULL y existe una tupla en la tabla
BASES DE DATOS I
SQL – INTEGRIDAD REFERENCIAL
12
Ninguna es NULL y existe una tupla en la tabla referenciada cuyos valores de clave coinciden con los de tales columnas
Sea R[F]<<S[U]
Observaciones:
1. Cada tipo de match introduce una restricción adicional, con respecto al previo (full es más restrictivo que partial y éste más restrictivo que simple).
BASES DE DATOS I
SQL – INTEGRIDAD REFERENCIAL
13
simple).
2. El efecto de los diferentes tipos de matching es equivalente si la clave extranjera es de un único dominio y/o todas las columnas referenciadas/referenciantes no pueden ser nulas.
Ejemplo Si la tabla referenciada tiene tuplas que tienen las
siguientes claves:10, ‘maria’20, ‘jose’32, ‘lucia’
BASES DE DATOS I
SQL – INTEGRIDAD REFERENCIAL
14
32, ‘lucia’
En el caso de MATCH SIMPLE Los siguientes valores de claves extranjeras serían
correctos:10, ‘maria’ NULL, ‘jose’10, NULL NULL, ‘lucas’ !!30, NULL !! NULL, NULL
E incorrectos:10, ‘jose’ 32, ‘lucas’ 23, ‘jose’
Ejemplo (cont) En el caso de MATCH PARTIAL
Los siguientes valores de clave extranjera serían válidos
BASES DE DATOS I
SQL – INTEGRIDAD REFERENCIAL
15
serían válidos10, ‘maria’NULL, NULL10, NULLNULL, ‘jose’
Los siguientes son incorrectosNULL, ‘lucas’ 30, NULL10, ‘jose’ 10, ‘lucas’
Ejemplo (cont) En el caso de MATCH FULL
Los siguientes serían valores válidos para la clave extranjera
BASES DE DATOS I
SQL – INTEGRIDAD REFERENCIAL
16
clave extranjera 10, ‘maria’NULL, NULL
Los siguientes son incorrectos10, NULL NULL, ‘jose’NULL, ‘lucas’ 30, NULL10, ‘jose’ 10, ‘lucas’
Acciones referenciales que pueden ejecutarse cuando una tupla referenciada es borrada (ON DELETE):
NO ACTION: el borrado se ejecuta sólo si no existen tuplas en la tabla referenciante, cuya clave extranjera coincida con la clave primaria de la tupla a ser borrada.
BASES DE DATOS I
SQL – INTEGRIDAD REFERENCIAL
17
con la clave primaria de la tupla a ser borrada. RESTRICT: la misma semántica de NO ACTION, pero se
aplica antes de la sentencia SQL que la dispara. NO ACTION se aplica después de haber finalizado la sentencia SQL, inclusive otras acciones referenciales
La acción RESTRICT impide estados inconsistentes transitorios, mientras que NO ACTION los permite.
CASCADE: el borrado de una tupla en la tabla referenciada implica el borrado de todas las tuplas de la tabla referenciante cuya clave extranjera coincida con la clave primaria de la tupla a borrar.
SET NULL: el borrado de una tupla en la tabla
BASES DE DATOS I
SQL – INTEGRIDAD REFERENCIAL
18
SET NULL: el borrado de una tupla en la tabla referenciada implica poner en NULL la clave extranjera de todas las tuplas de la tabla referenciante cuya clave extranjera coincida con la clave primaria de la tupla a borrar (si ésto es admitido)
SET DEFAULT: el borrado de una tupla en la tabla referenciada implica actualizar con el valor por defecto la clave extranjera de todas las tuplas de la tabla referenciante cuya clave extranjera coincida con la clave primaria de la tupla a borrar.
Las acciones referenciales a ser ejecutadas cuando una tupla referenciada es actualizada (ON UPDATE): Tienen el mismo significado de las acciones
por borrado.
BASES DE DATOS I
SQL – INTEGRIDAD REFERENCIAL
19
por borrado. diferencia: la acción CASCADE tiene el
efecto de asignar a las claves extranjeras, el valor nuevo de la clave de la tupla actualizada.
Por defecto: NO ACTION, tanto para borrados como para actualizaciones.
BASES DE DATOS I
TRIGGERS: Modelo de ejecución SQL:1999
20
Extraído de: “Semantic Integrity Support in SQL-99 and Commercial(Object-)Relational Database Management Systems”Can Türker y Michael Gertzhttp://www.db.cs.ucdavis.edu/publications/#2000
CREATE TABLE Curso (IdCarrera DominioCarrera NOT NULL, NroCurso INT CHECK(NroCurso BETWEEN 100 AND 999)
DEFAULT 100,NbreCurso CHAR(25),PRIMARY KEY (IdCarrera, NroCurso )
BASES DE DATOS I
SQL – INTEGRIDAD REFERENCIAL
21
PRIMARY KEY (IdCarrera, NroCurso ));
CREATE TABLE Libro (Titulo CHAR(30) NOT NULL,ISBN INT PRIMARY KEY,Id_Carrera DominioCarrera, NroCurso INT CHECK(NroCurso > 99 AND NroCurso < 1000),FOREIGN KEY (IdCarrera, NroCurso ) REFERENCES Curso
MATCH <condicion> ON DELETE <accion referencial>);
Acción referencial: NO ACTION (RESTRICT ),MATCH: Default (sin cláusula MATCH SIMPLE)
Titulo ISBN IdCarrera NroCurso IdCarrera NroCurso NbreCurso
FDBS 1111 APU 302 APU 302 BDatos
Libro Curso
BASES DE DATOS I
SQL – INTEGRIDAD REFERENCIAL
22
FDBS 1111 APU 302 APU 302 BDatos
Cómo se ejecutarían las siguientes sentencias?
INSERT INTO Libro VALUES (Bases, 2222, math, null); Satisfactoriamente,por la opción MATCH SIMPLE
DELETE FROM Curso WHERE IdCarrera = APU AND NroCurso = 302; Se rechaza, por la acción referencial NO ACTION
Acción referencial: CASCADE,MATCH : PARTIAL
Libro Curso
BASES DE DATOS I
SQL – INTEGRIDAD REFERENCIAL
Titulo ISBN IdCarrera NroCurso IdCarrera NroCurso NbreCurso
FDBS 1111 APU 302 APU 302 BDatos
23
Que ocurre con la ejecución de estas sentencias??
INSERT INTO Libro VALUES (Bases, 2222, math, null); Se rechaza por MATCH PARTIAL
INSERT INTO Libro VALUES (Bases, 2222, APU, null); Se ejecuta satisfactoriamente por MATCH PARTIAL
DELETE FROM Curso WHERE IdCarrera = APU AND NroCurso = 302;Se ejecuta satisfactoriamente, por CASCADE (se borrarán todas las tuplas)
FDBS 1111 APU 302 APU 302 BDatos
Acción referencial: SET NULL,MATCH : FULL
Libro Curso
BASES DE DATOS I
SQL – INTEGRIDAD REFERENCIAL
Titulo ISBN IdCarrera NroCurso IdCarrera NroCurso NbreCurso
FDBS 1111 APU 302 APU 302 BDatos
24
INSERT INTO Libro VALUES (Bases, 2222, APU, null);Se rechaza por MATCH FULL
INSERT INTO Libro VALUES (Bases, 2222, null, null); Se ejecuta satisfactoriamente por MATCH FULL
DELETE FROM Curso WHERE IdCarrera = APU AND NroCurso = 302;Se ejecuta satisfactoriamente por SET NULL (la tupla de Curso será borrada y la clave extranjera de la tupla de Libro se actualizará con NULL)
BASES DE DATOS I
Estudio de las restricciones diferentes formas en que los datos se interrelacionan entender la manera en que las restricciones interactúan
entre sí detectar restricciones redundantes y situaciones
INTEGRIDAD REFERENCIAL CONFLICTIVA
25
detectar restricciones redundantes y situacionesconflictivas.
ciertas combinaciones de restricciones y acciones referencialesy restricciones de nulidad tienen un comportamientoimpredecible bajo ciertas circunstancias
por el orden en el cual las tuplas son accedidas por el orden en el cual las restricciones son forzadas.
BASES DE DATOS I
INTEGRIDAD REFERENCIAL CONFLICTIVA
Estudiar las anomalías que se producen al efectuar actualizaciones sobre relaciones pertenecientes a un esquema conceptual conflictivo.
Estudiar las condiciones bajo las cuales se producen estas
26
Estudiar las condiciones bajo las cuales se producen estas anomalías en la manipulación de los datos, teniendo en cuenta que el efecto final de una operación
no debe depender del orden en que se fuercen las restricciones de integridad
No debe depender del orden en que se actualicen las tuplas
BASES DE DATOS I
Mientras el modelo de ejecución de SQL-99 no estuvo disponible:
cada sistema implementó alguna estrategia para evitar elcomportamiento irregular:
• Extensión del DDL para permitir al usuario la especificación del orden
INTEGRIDAD REFERENCIAL CONFLICTIVA
27
• Extensión del DDL para permitir al usuario la especificación del ordenen el cual las restricciones deben ser forzadas por el sistema responsabilidad del control en el usuario y fuente de posibles errores.
•Examen de todas las posibles secuencias de ejecución en tiempo decorrida, rechazando la operación ni bien se detecten dos resultadosdiferentes tiempo de respuesta inaceptable.
•Detección de las situaciones potencialmente imprevisibles en tiempode diseño, rechazando tal diseño solución más satisfactoria.
BASES DE DATOS I
Borrados:
Propagación
A1 A2 A3 B1 B2 B3 C1 C2 C3
INTEGRIDAD REFERENCIAL CONFLICTIVA
28
Propagación
A1 A2 A3 B1 B2 B3 C1 C2 C3
BASES DE DATOS I
Actualizaciones a derecha:
Sin propagación
INTEGRIDAD REFERENCIAL CONFLICTIVA
29
A1 A2 A3 B1 B2 B3 C1 C2 C3
Propagación
A1 A2 A3 B1 B2 B3 C1 C2 C3
BASES DE DATOS I
Inserciones y Actualizaciones a Izquierda:
Sin Propagación
INTEGRIDAD REFERENCIAL CONFLICTIVA
30
A1 A2 A3 B1 B2 B3 C1 C2 C3
A1 A2 A3 B1 B2 B3 C1 C2 C3
Propagación
BASES DE DATOS I
INTEGRIDAD REFERENCIAL CONFLICTIVA
#Dir #Proy #Proy
I3 I2
I4
#Proy IdInstit#Empl #Dir #Proy IdInstitI5
I1
(I1) DIRECTOR[#Dir]<<EMPLEADO [#Empl]
DIRECTOR
EMPLEADO
INSTITUTO
PROYECTO
31
(I1) DIRECTOR[#Dir]<<EMPLEADO [#Empl](I2) INSTITUTO[#Proy]<<PROYECTO[#Proy](I3) EMPLEADO[#Dir, #Proy]<<DIRECTOR[#Dir, #Proy](I4) DIRECTOR[#Proy]<<PROYECTO[#Proy](I5) EMPLEADO[#Proy, IdInstit]<<INSTITUTO[#Proy, IdInstit]
R3:PROYECTO
B. de DatosAplic-WebTecn-Soft
R4: DEPARTMENTO
B. de DatosAplic-WebTecn-Soft
Cs. ComputTecnologíaTecnología
R1: EMPLEADO
Juan Hugo José María
María nullHugonull
B. de DatosAplic-WebAplic-Web B. de Datos
Cs. ComputnullTecnología Cs. Comput
R2: DIRECTOR
María Hugo
B. de DatosAplic-Web
PROYECTO
Se excluye I1. I5, I2 e I3 tienen acción referencial en Cascada. I4 es restricta
Insertar (<Ana, María, DataMining, Cs. Comput.>, R1)
Por I5 e I2 se inserta <DataMining> en R3 Por I3 e I4 se bloquea la inserción.
BASES DE DATOS I
INTEGRIDAD REFERENCIAL CONFLICTIVA: inserciones
32
Por I3 e I4 se bloquea la inserción.
El resultado depende del orden en el que se verifican las rirs que involucran a R1:
(i) si se considera I5 en primer lugar, <DataMining, Cs. Comput.> se inserta en R4 que promueve el forzado de I2, que provoca la inserción de <DataMining> en R3 luego I3 causará la inserción de <María, DataMining> en R4
(ii) si I3 es considerada en primer lugar, < María, DataMining> es insertada en R2 se fuerza I4 que bloquea la operación ya que <DataMining> no existe en R3.
BASES DE DATOS I
INTEGRIDAD REFERENCIAL CONFLICTIVA: inserciones
3-I3
2-I2 1-I5
R1: EMPLEADO
Juan Pedro José María Ana
María nullHugonullMaría
B. de DatosAplic-WebAplic-Web B. de Datos Data Mining
Cs. Comput.null
Tecnología Cs. Comput
Cs. Comput.
R2: DIRECTOR
María HugoMaría
B. de DatosAplic-Web
Data Mining
R3: PROYECTO
B. de DatosAplic-WebTecn-Soft Data Mining
R4: DEPARTAMENTO
B. de DatosAplic-WebTecn-SoftData Mining
Cs. Comput.TecnologíaTecnologíaCs. Comput.
33
R1: EMPLEADO
Juan Pedro José María Ana
María nullHugonullMaría
B. de DatosAplic-WebAplic-Web B. de Datos Data Mining
Cs. Comput.nullTecnología Cs. Comput.Cs. Comput.
R2: DIRECTOR
María HugoMaría
B. de DatosAplic-WebData Mining
R3: PROYECTO
B. de DatosAplic-WebTecn-Soft Data Mining
R4: DEPARTAMENTO
B. de DatosAplic-WebTecn-SoftData Mining
Cs. Comput.TecnologíaTecnologíaCs. Comput.
I5 + I2 I3 +I4
1-I3
2-I4
R1: EMPLEADO
Juan Pedro José María Ana
María nullHugonullMaría
B. de DatosAplic-WebAplic-Web B. de Datos Data Mining
Cs. Comput.null
Tecnología Cs. ComputCs. Comput.
R2: DIRECTOR
María HugoMaría
B. de DatosAplic-WebData Mining
R3: PROYECTO
B. de DatosAplic-WebTecn-Soft
R4: DEPARTAMENTO
B. de DatosAplic-WebTecn-Soft
Cs. Comput.TecnologíaTecnología
BASES DE DATOS I
INTEGRIDAD REFERENCIAL CONFLICTIVA: inserciones
34
Como no existe en R3 el proyecto Data Mining, la operación de inserción es bloqueada.
R1: EMPLEADO
Juan Pedro José María
María nullHugonull
B. de DatosAplic-WebAplic-Web B. de Datos
Cs. Comput.nullTecnología Cs. Comput.
R2: DIRECTOR
María Hugo
B. de DatosAplic-Web
R3: PROYECTO
B. de DatosAplic-WebTecn-Soft
R4: DEPARTMENTO
B. de DatosAplic-WebTecn-Soft
Cs. Comput.TecnologíaTecnología
I3 +I4 I5 + I2
I3 tiene acción referencial RestrictaI1 tiene acción referencial Cascada
Borrar (<Juan, María, B. de Datos, Cs. Comput>,<María, -, B. de Datos, Cs. Comput>, R1)
BASES DE DATOS I
INTEGRIDAD REFERENCIAL CONFLICTIVA: borrados
35
Datos, Cs. Comput>, R1)
(i) si <María, -, B. de Datos, Cs. Comput> es accedida primero, laoperación es bloqueada por <Juan, María, B. de Datos, Cs.Comput.>
(ii) si <Juan, María, B. de Datos, Cs. Comput.> se accede primero, laoperación puede ser ejecutada y ambas tuplas son borradas
El resultado depende del orden de acceso a las tuplas implicadas
I2 a2 b2
I1 a1 b1
#PERS NOMBRE
R2FILM-N #PROD #DIR TEMAR1
R2: STAFF
FILM
STAFF
BASES DE DATOS I
INTEGRIDAD REFERENCIAL CONFLICTIVA: inserciones
36
R1: FILM
Parque JurásicoHombres de NegroStargateMulan
1124
4235
Terror FXFantásticaDib. Anim.
R1': FILM
Parque JurásicoHombres de NegroStargateMulan
1124
4223
Terror FXFantásticaDib. Anim.
R2: STAFF
1 2 3 4 5
StevenOliverJohn MelJeff
a1 y a2 son las acciones referenciales para altasb1 y b2 son las acciones referenciales para borrados
a1: restricto, a2: cascada
Insertar (<El Amor y el Espanto, 6, 6, drama>, R1)
El resultado depende del orden de verificación de las
BASES DE DATOS I
INTEGRIDAD REFERENCIAL CONFLICTIVA: inserciones
37
El resultado depende del orden de verificación de las restricciones de integridad referencial:
(i) si I2 se hace cumplir primero, entonces <El Amor y el Espanto, 6, 6, drama> se inserta en R1 y <6, null> en R2;
(ii) si I1 se cumple primero, la inserción es bloqueada porque no existe en R2 un valor de #PERS igual a 6.
a1: set null, a2: cascada
#PROD y #DIR en R1 pueden tomar valores nulos
Insertar (<El Amor y el Espanto, 6, 6, drama>, R1)
BASES DE DATOS I
INTEGRIDAD REFERENCIAL CONFLICTIVA: inserciones
38
El resultado depende del orden de verificación de las restricciones de integridad referencial:
(i) si I2 se hace cumplir primero, entonces <El Amor y el Espanto, 6, 6, drama> se inserta en R1 y <6, null> en R2
(ii) si I1 se cumple primero <El Amor y el Espanto, null, 6, drama> es insertada en R1 y <6, null> en R2.
b1: restricto, b2: cascada; Esquema de la base de datos {R1’, R2}
Borrar (<2, Oliver>, R2)
Por I1, <Stargate, 2, 2, Fantástica> en R1’ puede bloquear el borrado Por I2, se desencadena el borrado de esta tupla
BASES DE DATOS I
INTEGRIDAD REFERENCIAL CONFLICTIVA: borrados
39
Por I2, se desencadena el borrado de esta tupla
El resultado del borrado depende del orden de verificación de lasrestricciones de integridad referencial que involucran a R2:
(i) si I2 se hace cumplir primero, entonces <Hombres de negro, 1, 2,FX> y <Stargate, 2, 2, Fantástica> son borradas de R1’
(ii) si I1 se cumple primero, la operación es bloqueada por <Stargate, 2,2, Fantástica> de R1’.
R1
(I1)
IdÁngulo IdPunto1 IdPunto2 IdPunto3 IdPunto2IdPunto1 R2ColorSeg
ANGULO SEGMENTO
BASES DE DATOS I
INTEGRIDAD REFERENCIAL CONFLICTIVA: inserciones
40
(I2)
ÁNGULO
123
632
362
443
SEGMENTO
1236
3344
rojorojoazul
verde
a1: set null, a2: restricto
Las claves extranjeras (IdPunto1, idPunto3) y (IdPunto2, IdPunto3)en R1 pueden tomar valores nulos
Insertar (<6, 7, 7, 5>, R1)
BASES DE DATOS I
INTEGRIDAD REFERENCIAL CONFLICTIVA: inserciones
41
El resultado depende del orden de verificación de las restriccionesde integridad referencial que involucran a R1:
(i) si I2 se hace cumplir primero, la operación es bloqueada porqueno existe en R2 una tupla con los valores (7, 5) en (IdPunto1,idPunto2)
(ii) si I1 se cumple primero la tupla (6, null, 7, null) es insertada enla relación r1 y ya no es necesario hacer cumplir I2 ya que unaclave extranjera parcialmente nula es totalmente nula.
b1: set null, b2: set null;
Borrar (<2 3 rojo>, R2)
Por I1 y por I2 se llega a <3 2 2 3> en R1.
BASES DE DATOS I
INTEGRIDAD REFERENCIAL CONFLICTIVA: borrados
42
El resultado depende del orden de verificación de lasrestricciones de integridad referencial:
(i) si I1 se hace cumplir primero, entonces <3 2 2 3> seactualiza en R1, quedando <3 null 2 null>. Forzar I2 no tieneefecto.
(ii) si I2 se cumple primero, <3 2 2 3> se actualiza en R1,quedando <3 2 null null>. Forzar I1 no tiene efecto.
md1: restricto, md2: cascada
Actualizar (<2 3 rojo>, <2 7 rojo>, R2)
Por I1 <3 2 2 3> en R1 bloquea la operación
BASES DE DATOS I
INTEGRIDAD REFERENCIAL CONFLICTIVA: modificaciones
43
Por I1 <3 2 2 3> en R1 bloquea la operación
Por I2 se desencadena la actualización de esta tupla en (3 2 2 7)
El resultado depende del orden de verificación de lasrestricciones de integridad referencial que involucran a R2.
md1: set null, md2: cascada
Actualizar (<2 3 rojo>, <2 7 rojo>, R2)
El resultado depende del orden de cumplimiento de las
BASES DE DATOS I
INTEGRIDAD REFERENCIAL CONFLICTIVA: modificaciones
44
El resultado depende del orden de cumplimiento de lasrestricciones de integridad referencial:
(i) si primero se fuerza I1, <3 2 2 3> en R1 serácambiada a <3 null 2 null>. Forzar I2 no tiene efecto.
(ii) si primero se fuerza I2, <3 2 2 3> en R1 serácambiada a <3 2 2 7>. Forzar I1 no tiene efecto.
Actualización a izquierda
Las actualizaciones de los valores de atributos de la claveextranjera podría producir:
i) la inserción de tuplas ‘objetivo’ en las relaciones referenciadas,
BASES DE DATOS I
INTEGRIDAD REFERENCIAL CONFLICTIVA: modificaciones
45
i) la inserción de tuplas ‘objetivo’ en las relaciones referenciadas,por las restricciones de integridad referencial asociadas conacciones referenciales de actualización a izquierda en cascada.
ii) la instanciación en null de las claves extranjeras en las tuplasimplicadas que referencian tuplas no existentes en la relaciónreferenciada si la acción referencial es set null.
iii) El bloqueo si la operación promueve una ‘referencia colgada’(dangling reference).
La operatoria es análoga a la correspondiente a inserciones
BASES DE DATOS I
INTEGRIDAD REFERENCIAL CONFLICTIVA:Inserciones y Modific. a izquierda
CASCADA
NULO
C C
N
Ri Rj
Ri Rj
La inserción es de un solo paso
si las claves no están anidadas
46
CASCADA +RESTRICTO
C C R
Ri RiRk
Camino 1 Camino 2 Fuente Relación Afectada
cascada cascada + restricto Ri Rj
cascada nulo Ri Rj
cascada + restricto nulo Ri Ri
nulo nulo Ri Ri
INTEGRIDAD REFERENCIAL CONFLICTIVA:Borrados y Modific. a derecha
BASES DE DATOS I
CASCADA
CASCADA + NULO
C C
N
Ri Rj
Ri RiRk
C C
47
Camino 1 Camino 2 Fuente Relación Afectada
cascada cascada + nulo Ri Rj
cascada cascada + restricto Ri Rj
cascada + restricto cascada + nulo Ri Rj
cascada + nulo cascada + nulo Ri Rj
CASCADA + RESTRICTO
C C R
Ri RiRk
BASES DE DATOS I
INTEGRIDAD REFERENCIAL CONFLICTIVA
Los sistemas comerciales proveen facilidades declarativas paraclaves extranjeras sólo para operaciones a derecha.
Algunos sistemas no permiten especificar todas las opciones paraacciones referenciales.
SQL provee sintaxis para actualizaciones a derecha y borrados,
48
SQL provee sintaxis para actualizaciones a derecha y borrados,combinados con todas las acciones referenciales.
Si se necesitan modalidades diferentes a las que provee el DBMS construir código específico triggers
Los esquemas de ejecución de cada DBMS son propios nonecesariamente siguen el estándar SQL:1999, salvo DB2 UDB de IBM.
Las herramientas CASE de ayuda al diseño conceptual puedengenerar restricciones en un orden que no es el apropiado
BASES DE DATOS I
Que hacer?
Vivir con el peligro: el usuario recibe un estado final, ignorandocómo se obtuvo.
Expandir la sintaxis y semántica de las reglas: asignación de
INTEGRIDAD REFERENCIAL CONFLICTIVA
49
Expandir la sintaxis y semántica de las reglas: asignación deprioridades paradigma de programación if-then-else muyintrincado
Vivir con algunas limitaciones: si se detecta una ambigüedadhacer rollback.
BASES DE DATOS I
Para tratar estos problemas
Tratamiento cuidadoso, evitando las situaciones potencialmenteconflictivas.
El problema es indecidible no es posible encontrar unalgoritmo que permita separar estados conflictivos de estados
INTEGRIDAD REFERENCIAL CONFLICTIVA
50
algoritmo que permita separar estados conflictivos de estadosseguros
Desarrollar modelos o marcos teóricos para detectar entiempo de compilación si el esquema presentará conflictos.
Desarrollar e implementar mecanismos para detectar yresolver situaciones anómalas en tiempo de ejecución(propuesta SQL:1992 y siguientes marcado de tuplas)
Tener en cuenta queproblemas de ambigüedad NO SON problemas de consistencia