Bases de Datos I Cursada 2008 Clase 2: Restricciones de ...

50
Bases de Datos I Cursada 2008 1 Clase 2: Restricciones de Integridad (de dominio y referenciales) Facultad de Ciencias Exactas Universidad Nac. Centro de la Pcia. de Bs. As.

Transcript of Bases de Datos I Cursada 2008 Clase 2: Restricciones de ...

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