• No se han encontrado resultados

6. Integridad en Sistemas de Bases de Datos Relacionales

N/A
N/A
Protected

Academic year: 2021

Share "6. Integridad en Sistemas de Bases de Datos Relacionales"

Copied!
16
0
0

Texto completo

(1)

1 Tema 6. Integridad en Sistemas de Bases de Datos Relacionales

de Datos Relacionales

Objetivos

Apreciar la necesidad de garantizar la integridad

o

corrección de la información almacenada en una base de

datos

Distinguir e identificar los diferentes tipos de reglas de

integridad

de datos definidos por el estándar SQL-92

Conocer los mecanismos

que proporciona SQL-92 para

definir reglas o restricciones de integridad en un

esquema de base de datos

2

6. Integridad en Sistemas de Bases de Datos

Relacionales

Contenidos

6.1 Reglas de integridad: consideraciones generales y

componentes

6.2 Reglas de integridad en SQL-92

6.2.1. Reglas de integridad de dominio 6.2.2. Reglas de integridad de tabla base 6.2.3. Reglas de integridad generales

(2)

3 Tema 6. Integridad en Sistemas de Bases de Datos Relacionales

Bibliografía

[EN 2002] Elmasri, R.; Navathe, S.B.:Fundamentos de Sistemas de Bases de Datos. 3ª Edición. Addison-Wesley. (Cap. 7 y 8)

[EN 1997] Elmasri, R.; Navathe, S.B.: Sistemas de bases de datos. Conceptos fundamentales. 2ª Edición. Addison-Wesley Iberoamericana. (Cap. 6 y 7)

[DD 1996] Date, C.J.; Darwen, H.:A Guide to the SQL Standard. 4th

Edition. Addison-Wesley. (Cap. 14)

[SKS 1998]Korth, H; Silberschatz, A., Sudarshan, S.:Fundamentos de bases de datos. 3ª Edición. McGraw-Hill. (Cap. 6)

6. Integridad en Sistemas de Bases de Datos

Relacionales

4 Tema 6. Integridad en Sistemas de Bases de Datos Relacionales

1.

Nos interesan las

reglas de integridad

específicas de

una BD

(reglas del negocio), además de RI Entidad, RI Referencial...

2.

Veremos las

RI

definidas

sobre

relaciones base

,

por estar restringidas a contener datos correctos(reflejar la realidad) La regla“los títulos de las películas son únicos” se aplica a la

tabla basePELICULA, y a cualquier vistadefinida sobre ésta

¿Podemos definir RI sobre relaciones derivadas (sobre vistas)?

• Sería deseable

• La vista heredaríatoda RI de sus relaciones base y podría añadir

nuevas(clave candidata nueva para la vista, p.ej.)

I

Sóloconsideraremos RI sobre relaciones base(por simplicidad)

6.1 Reglas de integridad

Consideraciones generales

• Integridad: consistencia o corrección de datos en la base de datos • Las reglas de integridad (RI) noson específicas para cada usuario

(3)

5 Tema 6. Integridad en Sistemas de Bases de Datos Relacionales

3.

Nos interesa

soporte

de RI

declarativo

Nohablaremos de...

- Procedimientos almacenados (stored procedures), ni de - Procedimientos disparados (triggered procedures)

4. Una BD en un

estado de integridad

es correcta

:

No viola ninguna RIconocida por el SGBD, es decir,

• Satisface ANDlógico de todas las RI definidas en su esquema

5.

La

integridad

es

importante

en...

• DISEÑO(estructuras de datosy reglas de integridadadecuadas)

• EJECUCIÓN(corrección de la información)

6. RI son

mantenidas

en

el

Catálogo

del Sistema

Subsistema de Integridaddel SGBD:

controla operacionesde usuario(INSERT,UPDATE,DELETE...)

• para asegurar que NO violan las reglas de integridad

Consideraciones generales

(y 2)

6

m

Nombre

actor_cache_ok

- Regla almacenada en el Catálogo del Sistema bajo ese nombre

- Aparecerá en diagnósticos,producidos por el sistema como respuesta a intentos de violación de la regla (mensajes de error al usuario)

m

Restricción

NOT EXISTS (SELECT * FROM ACTOR WHERE cache≤≤0)

- Expresión booleana NNRestricción de Integridad

Regla de Integridad - La regla ... se satisface ⇔ la restricción es TRUE

es violada ⇔ la restricción es FALSE

m

Respuesta

a un intento de violaciónde la regla

- Indica al SGBD qué hacer si se intenta una operación que viola la RI - Por defecto RECHAZAR(o rehusar) que implica...

· Deshacer los posibles dañoscausados por la operación · Mostrar información de diagnóstico(mensaje)

- Podría ser un procedimiento de complejidad arbitraria: tratarErr(...)

6.1 Reglas de integridad

(4)

7 Tema 6. Integridad en Sistemas de Bases de Datos Relacionales

Creación

de una regla de integridad...

(en cualquier momento)

SGBD comprueba:

¿el

estado actual

de la

BD satisface RI

?

-

ð

RI

aceptada

- el sistema la almacena en elcatálogo - la regla es activada(entra en vigor)

ðSGBD controlará todo INSERT yUPDATEde caché en ACTOR

-

No

ð

RI rechazada

Destrucción

de reglas de integridad

- el sistema elimina su definicióndel catálogo

• Las RIs pueden

restringir los valores legales

de

...

-

Dominio

-

Atributo

-

Relación

-

Base de Datos

6.1 Reglas de integridad

Creación, destrucción y tipos

8 Tema 6. Integridad en Sistemas de Bases de Datos Relacionales

1.

Restricciones de integridad

d

e

Dominio

– Asociadas a un dominio de datos específico

– Aplicadas a cada columna definida sobre el dominio

– No limitadas a la enumeración de valores posibles del dominio

» es una expresiónde complejidad arbitraria que define un dominio 2.

Restricciones de integridad de

Tabla

– RIs de complejidad arbitraria incluidas en la definición de una tabla (relación) – No limitadas a hacer referencia sólo a la tabla en la que son definidas

– Pueden ser restricciones de Atributo

restricciones de Clave Candidata

restricciones de Clave Externa

restricciones de Comprobación

û Una relación vacíacumple cualquier RI de tabla, aunque esa RI sea “esta tabla no puede estar vacía

6.2 Reglas de integridad en SQL-92

(5)

9 Tema 6. Integridad en Sistemas de Bases de Datos Relacionales

3.

Restricciones de integridad

Generales

– RIs de complejidad arbitraria no incluidas en la definición de ninguna tabla

– Son otro elemento más de la BD, al mismo nivel que una tablao vista

– Se aplican a cualquier combinación de columnas de cualquier nº de tablas

La paga mínima de los actores que actúan en una película es de 15.000€

CREATE ASSERTIONIR1_paga_mínima

CHECK(SELECT MIN(paga) FROM Actua_en) ≥15000 ;

Todo actor debe haber participado al menos en una película CREATE ASSERTION IR2_actor_en_película

CHECK (NOT EXISTS (SELECT * FROM Actor

WHERE codA NOT IN (SELECT actor FROM Actua_en)));

– Algunas RI generalespueden expresarse como RI de tabla

Categorías de reglas de integridad

(y 2)

10

• Una

regla de integridad

es

independiente

de cualquier

aplicación

específica que acceda a la base de datos

» no contiene parámetros ni variables host

(referencias a variables de los programas de aplicación)

• Es útil

ver la

base de datos sujeta a

una “

RI

gigante”...

ANDde todas las RI...

- generales

- de

tabla

- de

dominio

aplicadas a cada columna de las tablas

»Significado formal

de la base de datos

6.2 Reglas de integridad en SQL-92

(6)

11 Tema 6. Integridad en Sistemas de Bases de Datos Relacionales

• SQL rechaza todo intento de

INSERT

o

UPDATE

que

viole una especificación de

tipo de datos

ejemplo: valor CHARen columna definida como INTEGER

– Una especificación de tipo de datospuede verse como una «forma primitiva» de restricción de dominio

– Una violación de una RI de dominiose detecta en tiempo de ejecución

• SQL rechaza todo intento de

INSERT

o

UPDATE

sobre

una

vista

, si viola la

condición de definición de la vista

– Siempre que se haya especificado la opción de verificaciónen la definición de la vista (WITH CHECK OPTION)

6.2 Reglas de integridad en SQL-92

Características adicionales

(pseudo-RIs)

12 Tema 6. Integridad en Sistemas de Bases de Datos Relacionales

Definición del conjunto de valores componentes de un

dominio

:

-Enumeraciónde valoresposibles: (‘marrón,‘gris’, ‘azul’, ‘verde’, ‘negro’)

-Expresiónde definición: cache > 0 AND cache < 100

• RI como

parte

de la

sentencia de

definición

del dominio

CREATE DOMAIN <nombre dominio> [ AS ] <tipo de datos> [ DEFAULT <valor defecto> ]

[ [ CONSTRAINT<nomRestricción> ] CHECK (<condición>) ]+;

donde <valor defecto> = { literal | funciónSinArgum | NULL }

y funciónSinArgumes USER ó CURRENT_USERauthorization-ID actual

SESSION_USER authorization-ID de sesión SQL actual

SYSTEM_USER ID del usuario del SO actual

CURRENT_DATE fecha del día

CURRENT_TIME hora actual

CURRENT_TIMESTAMP marca de tiempo actual i

iID=identificador

6.2 Reglas de integridad en SQL-92

(7)

13 Tema 6. Integridad en Sistemas de Bases de Datos Relacionales

CREATE DOMAINColor AS VARCHAR(10) DEFAULT‘marrón’

CONSTRAINT color_válido

CHECK (VALUEIN( ‘marrón, ‘gris’, ‘azul’, ‘verde’, ‘negro’ ) ); CREATE DOMAIN Estado_civil CHAR(1)

CONSTRAINT estado_civil_ok CHECK ( VALUE IN (‘S’, ‘C’, ‘V’, ‘D’) ) ;

– NOT NULL no es una restricción de dominio válida

§CREATE DOMAIN Estado_civil AS CHAR(1) NOT NULL EIncorrecto §CREATE DOMAIN Estado_civil AS CHAR(1)

CHECK (VALUE IS NOT NULL) ECorrecto

Alteración

de un dominio

ALTER DOMAIN<nomdominio>...;

– Permite añadir y eliminar restriccionesde integridad de dominio y valor por defecto

Reglas de Integridad de Dominio

(2)

14

Eliminación

de un dominio

DROP DOMAIN<nomDominio> { RESTRICT| CASCADE } ;

§OpciónRESTRICT

- La eliminación fallasi el dominioes referenciadoen cualquier definición de columnaen una tabla

- En otro caso, tendrá éxito: el descriptor del dominio es eliminadodel catálogo

§Opción CASCADE

- El dominio es eliminado del catálogo

- Las RI-dominio asociadas no son eliminadas, sino que cada columna definida sobre el dominio...

· Es definida directamente sobre eltipo de datos subyacenteal dominio · Si no tiene DEFAULTexplícito, toma el del dominio (si éste lo tenía) ·Heredatoda restricción de integridad asociada al dominio,

-convertida en una restricción de tabla,

- sustituyendo VALUEpor el nombre de la columna

6.2 Reglas de integridad en SQL-92

(8)

15 Tema 6. Integridad en Sistemas de Bases de Datos Relacionales

• Restricción

asociada a

una

tabla específica

· la RI está definida como parte de la definición de la tabla, · la RI no existe si la tabla asociada no existe y

· eliminar la tabla implica eliminar la RI

• Toda

RI-tabla

puede expresarse como una

RI-general

(excepto la parte deuna RI de clave externaque indica la acción de mantenimiento de la integridad referencial)

• RI

especificada

dentro de

CREATE TABLE

CREATE TABLE <nombre tabla> ( <lista de elementosde tabla> ) ;

donde los elementospueden ser:

- Definición de columna, que puede incluir RIs de atributo

- Definición de... (precedida o no de CONSTRAINT <nombre restricción>) · Restricción de clave candidata

· Restricción de clave externa

· Restricción de comprobación(CHECK)

• RI

añadida

/

eliminada

con

ALTER TABLE <nombre tabla>...

6.2 Reglas de integridad en SQL-92

Reglas de Integridad de Tabla

N NPuede afectar a varias tablas

16 Tema 6. Integridad en Sistemas de Bases de Datos Relacionales

1. Definición de Columna

-

RI de Atributo

Especificación del dominio del atributoy otrasRIde atributo • No necesita sentencia de creación explícita: es partede la definición

de atributo, dentro de la sentencia de creación de la tabla:

CREATE TABLE Actor

( nombre VARCHAR(30) NOT NULL,

cache INT(9) NOT NULL DEFAULT 2000, colorOjos Color NOT NULL,

agencia CHAR(4), ...) ;

NToda RI-Atributoes comprobada inmediatamente:

– todo intento de INSERT o UPDATE(sobre el atributo) con un

valor∉∉dominio, es rechazadoal instante

» La respuesta a un intento de violación siempre es RECHAZAR • Si se especifica un dominiopara un atributo, la comprobación es

derivadahacia la comprobación de la restricción del dominio • Una RI-atributo se destruye al eliminar el atributo de la tabla

6.2 Reglas de integridad en SQL-92

(9)

17 Tema 6. Integridad en Sistemas de Bases de Datos Relacionales

2. Definición de

Restricción de Clave Candidata

• Clave Primaria PRIMARY KEY (<lista atributos>) NNincluye RI Entidad • Clave Alternativa UNIQUE (<lista atributos>)

3. Definición de

Restricción de Clave Externa

FOREIGN KEY (<atributos>) REFERENCES<tabla>(<atributos>)

[ ON DELETE{ NO ACTION| CASCADE| SET DEFAULT| SET NULL} ] [ ON UPDATE{ NO ACTION| CASCADE| SET DEFAULT| SET NULL} ] ñacciones referencialesposibles

Cualquier (combinación de) columna(s) puede ser clave externa • SQL-92 permite que una clave ajena se refieraa una clave

candidata(Nno sólo PKs)

• Referencia desde FKde la tabla T1 a una CKde la tabla T2...

» Asegurar que cada T2.FK contiene un valor existente en T2.CK

es el problema de la integridad referencial

Reglas de Integridad de Tabla

(3)

18

• Pueden existir ciclos referencialesy auto-referencias

• SQL-92 permite (¡por supuesto!)que una FK pueda contener NULL

– salvo si se especifica NOT NULLpara la FK en el CREATE TABLE

• La FK yla CKa la que referencia, deben...

– contener el mismo nºde componentes(columnas o atributos) y – éstos estar definidos sobre los mismos dominios

• Si FK noes compuesta, nose necesitacláusula FOREIGN KEY...

CREATE TABLE Actúa_en CREATE TABLE Actúa_en

(actor ... , (actor ... REFERENCES Actor(codA) ..., film ... , film ... REFERENCES Película(codP) ...,

papel ... , papel ... ,

PRIMARY KEY (actor, film), PRIMARY KEY (actor, film) FOREIGN KEY (actor) ... ) ;

REFERENCES Actor(codA)...,

FOREIGN KEY (film)

REFERENCES Película(codP)...

... ) ;

6.2 Reglas de integridad en SQL-92

(10)

19 Tema 6. Integridad en Sistemas de Bases de Datos Relacionales

Acciones referenciales

(recordatorio)

– Mantenimiento de integridad referencial ante intentos de violación

– Ejecución de operaciones adicionales que dejan la BD consistente

ON DELETE...

– Indica la regla de borradopara filas de T1 respecto de T2.FK

Qué ocurre si se intenta eliminar una fila r1 de T1y existe alguna fila r2en T2que le

hace referencia (e.d. contiene un valor r2.FK = r1.CK)

Acciones referenciales posibles:

a.NO ACTION(opción por omisión) Rechazarla operación de eliminación sobre T1

b.CASCADE Eliminar junto con r1toda fila r2de T2que se refiera a r1 (propagación) c.SET DEFAULT

Asignar su valor por defectoa cada componente de la FK en toda fila r2, y eliminar r1 »Debe existir una filaen T1con cada componente de CKa su valor por defecto

d. SET NULL

Asignar NULL a cada componente de la FK en todas las filas r2, y eliminar r1 »Cada componente de la FK debe tener nulos permitidos

6.2 Reglas de integridad en SQL-92

Reglas de Integridad de Tabla

(5)

20 Tema 6. Integridad en Sistemas de Bases de Datos Relacionales

ON UPDATE...

– Indica la regla de actualizaciónpara T1.CKrespecto de T2.FK

Qué ocurre si se intenta modificar la clave candidata dentro de una fila r1 de T1y

existe alguna fila r2en T2que le hace referencia (contiene valor r2.FK = r1.CK)

Acciones referenciales posibles:

a. NO ACTION(opción por omisión) Rechazarla actualización sobre T1.CK

b. CASCADE Propagarla actualización de CKa toda fila r2de T2que se refiera a r1

c. SET DEFAULT

Asignar su valor por defectoa los componentes de FKque corresponden a componentes modificados de T1.CK, en todas las filas r2, y actualizar r1

»Debe existir una filaen T1con cada componente de CKa su valor por defecto

d. SET NULL

Asignar NULLa los componentes de la FKcorrespondientes a componentes modificados en T1.CK, en todas las filas r2, y actualizar r1

»Tales componentes de la FK debe tener nulos permitidos

6.2 Reglas de integridad en SQL-92

(11)

21 Tema 6. Integridad en Sistemas de Bases de Datos Relacionales

Comportamiento ante

una operación de

manipulación de

datos

, en función de la

acción referencial

especificada

Sea T2.FKuna clave externahacia la clave candidata T1.CK... qLa definición de FKno incluye ON DELETEniON UPDATE...

§ INSERTen T2o UPDATEde T2.FK

si el valor de T2.FKno existeen T1.CKðRechazo (NO ACTION) § DELETEen T1o UPDATEde T1.CK

si alguna tuplade T2le hace referencia ðRechazo (NO ACTION)

qLa definición de FKincluyeON DELETEo bien ON UPDATE...

§ INSERTen T2o UPDATEde T2.FK

si el valor de T2.FKno existeen T1.CK ðRechazo (NO ACTION) § DELETEenT1o UPDATEde T1.CK

si alguna tuplade T2le hace referencia ðejecución de laacción referencialespecificada en las cláusulas

Reglas de Integridad de Tabla

(7)

22

4. Definición de

Restricción de Comprobación

(CHECK)

Regla que se refiere únicamente auna tabla

• Puede especificar restricciones adicionales para algún atributo

El cache de un actor siempre está entre 300 y 1200€ CREATE TABLE ACTOR ( ...,

CONSTRAINT actor_caché_ok

CHECK ( cache > 300 AND cache < 1200 ), ... );

• Puede definir restricciones que involucran varios atributosde la tabla

Toda película se estrena después de finalizar su rodaje CREATE TABLE PELICULA ( ...,

CONSTRAINT película_fechas_ok

CHECK ( fecha_fin_rodaje < fecha_estreno ), ... );

I

Toda RI-Tabla

base es

comprobada inmediatamente

:

• Unaoperación de modificaciónsobre la tabla incluye el chequeo de todas sus RI(como paso final de la operación) + (una posible) acción

6.2 Reglas de integridad en SQL-92

(12)

23 Tema 6. Integridad en Sistemas de Bases de Datos Relacionales

• Restricción de complejidad arbitraria que involucracualquier nº de

columnas de cualquier nº de tablas

Elemento de BD, independientede tablas/vistas existentes • Especificarestricciones de integridad que pueden noser...

üde clave (primaria o alternativa)

üde integridad referencial (clave ajena)

• Tiene un nombre y consta de una condición(cláusulaCHECK)

Creación

de una RI general

(aserción o aserto)

CREATE ASSERTION <nombre restricción> ðnombre obligatorio

CHECK (<condición> ) ;

– Si unatupla de la BD hace que condición=FALSE, la restricción

habrá sido violada

– Un estadode la BD satisfaceun aserto si ninguna combinación de tuplas de dicho estado viola la restricción que incluye

6.2 Reglas de integridad en SQL-92

Reglas de Integridad Generales

(asertos)

24 Tema 6. Integridad en Sistemas de Bases de Datos Relacionales

– Normalmente, <condición>se expresa en negativo:

todo X satisface Y ≡≡ ningún X satisface NO( Y ) Todo actor representado por la agencia 1 debe cobrar 300€ o más CREATE ASSERTION age1_cache_ok

CHECK (NOT EXISTS (SELECT * FROM Actor

WHERE agencia=1 AND cache<300)) ; Ninguna agencia representa a más de 40 actores

CREATE ASSERTION num_actores_age_ok CHECK (NOT EXISTS (SELECT * FROM Actor

GROUP BY codAge HAVING COUNT(*) > 40)) ;

Todo actor no protagonista de una película cobra menos que cq protagonista CREATE ASSERTION paga_actores_ok

CHECK (NOT EXISTS (SELECT * FROM Actua_en ACT WHERE papel<>‘protagonista’ AND

paga >= ANY (SELECT paga FROM Actua_en PROTA WHERE ACT.film=PROTA.film AND PROTA.papel=‘protagonista’));

6.2 Reglas de integridad en SQL-92

(13)

25 Tema 6. Integridad en Sistemas de Bases de Datos Relacionales

Debe de existir al menos una distribuidora de películas CREATE ASSERTION existencia_distribuidora

CHECK ( 0 < SELECT COUNT (*) FROM Distribuidora ) ;

N

este aserto...

- debe crearse una vez que ya exista alguna tupla en DISTRIBUIDORA - una operación DELETEpuede o no violarlo, pero nunca lo hará un

INSERT

El código de los guiones es único(≡si hay 2 guiones con igual código, son el mismo)

CREATE ASSERTION guión_código_único

NOT EXISTS (SELECT * FROM Gui ón G1, Guión G2 WHERE G1.codG = G2. codG

AND NOT ( G1.titulo=G2.titulo AND G1.descrip= G2.descrip) );

N

este aserto...

- Equivale a especificarUNIQUE( codG )en elCREATE TABLE

Reglas de Integridad Generales

(3)

26 Los actores y películas anotados en la relación ACTUA_ENdeben existir

CREATE ASERTION actúa_en_ok

CHECK (NOT EXISTS (SELECT * FROM Actúa_en

WHERE actor NOT IN (SELECT codA FROM Actor) OR film NOT IN (SELECT codP FROM Película)));

N

este aserto...

- Equivale a especificar...

FOREIGN KEY (actor) REFERENCES Actor(codA)...

y FOREIGN KEY (film) REFERENCES Película(codP)...

... dentro delCREATE TABLE Actor (...)

Eliminación

de una RI general

DROP ASSERTION <nomRestricción>;

NSin opciónRESTRICTo CASCADE

– Elimina el aserto del catálogo

6.2 Reglas de integridad en SQL-92

(14)

27 Tema 6. Integridad en Sistemas de Bases de Datos Relacionales

• En muchos casos

conviene especificar una acción

que

ejecutar (disparar)

tras

la

violación de

una

restricción

:

-Abortarla transacciónque provoca la violación, o -Informarde ello al usuario (mensaje), o

-Ejecutarcierto procedimiento, o -Disparar otras actualizaciones

» Esto se consigue mediante los disparadoresotriggers

Definición

de un

disparador

DEFINE TRIGGER <nombre>ON <lista tablas>:

<condición>ACTION_PROCEDURE <llamada a procedimiento>

– Especifica una condicióny la acciónque realizar si ésta se cumple – La ejecución del triggerse considera parte de la ejecución de la

operación que intentó violar la RI

6.2 Reglas de integridad en SQL-92

Disparadores

- antiguas versiones de SQL

28 Tema 6. Integridad en Sistemas de Bases de Datos Relacionales

Si se detecta que algún actor en una película percibe una paga mayor que la de un protagonista, pedir confirmación para permitir dicho estado o no

DEFINE TRIGGER Disp_Paga ON Actúa_en ACT, Actúa_en PROTA:

ACT.film=PROTA.film AND ACT.papel <> ‘protagonista’

AND PROTA.papel = ‘protagonista’ AND ACT.paga >= PROTA.paga

ACTION_PROCEDURESolicitarAprobacion(...) ;

Combinan

los

enfoques declarativo y procedimental

- La condicióndel disparador es declarativa

- Su acciónopera por procedimientosASSERTION

vs.

TRIGGER

- ASSERTIONprohiberealizar una actualizaciónque violael aserto (es decir, que hace FALSEla condición)

- TRIGGERpuede permitirla actualizaciónque cumple la condición

(es decir, que viola una RI), pero ejecutauna acción(que puede reparar la violación, dejando consistente la BD)

» Las condicionesespecificadas en una y otro son inversas

6.2 Reglas de integridad en SQL-92

(15)

29 Tema 6. Integridad en Sistemas de Bases de Datos Relacionales

SGBD comprueba

una

RI

de forma

inmediata

como último paso de ejecución de operación o sentencia SQL

– Si la RI es violada, la operación o sentencia se cancela y no tiene efecto sobre la base de datos

• A veces es

necesario que ciertas

restricciones no

sean

comprobadas hasta pasado un tiempo

, pues

si se hiciera

de inmediato, siempre fallarían

Ciclo referencial T1 T2 Inicialmente,T1y T2están vacías

CREATE TABLE T1 CREATE TABLE T2

( atrib1 ... , ( atrib2 ... ,

FOREIGN KEY (atrib1) FOREIGN KEY (atrib2)

REFERENCES T2 (...) ... , REFERENCES T1 (...) ... ,

... ) ; ... ) ;

- Con chequeo inmediatode estas FKs (RI referencial), toda inserción de filas en cualquier tabla fallaría, pues nunca encontraría la fila destino en la otra tabla

30

• En un momento dado, dentro de cierta transacción SQL, toda

restricción de integridad debe estar en modo...

- INMEDIATE: será comprobada inmediatamente, o

- DEFERRED: será chequeada al final de la transacción (diferida)

N

Para algunas restricciones de integridad, la comprobación

diferida no tiene sentido:

• Restricciones de dominio

• Restricción de atributoNOT NULLy

• Restricciones de clave candidata

6.3 Comprobación de restricciones

(16)

31 Tema 6. Integridad en Sistemas de Bases de Datos Relacionales

• Una

definición

de

restricción de integridad

puede

incluir

[ INITIALLY{ DEFERRED| IMMEDIATE} ]

[ [ NOT] DEFERRABLE]

§ INITIALLY DEFERRED, o bienINITIALLY IMMEDIATE

– especifica el modo inicialde la RI, es decir, el modo en el que está tras de ser definida (creada) y al comienzo de cada transacción SQL

§ DEFERRABLE, o bienNOT DEFERRABLE

– indica sila RI puede pasar amodoDEFERRED

§ Si nose indica ningún modo inicial, se asume INITIALLY IMMEDIATE § Si se especifica INITIALLY IMMEDIATE(o se asume)...

- Si no se indica DEFERRABLEni NOT DEFERRABLE, se asume NOT DEFERRABLE

§ Si se especifica INITIALLY DEFERRED, nopuede indicarse NOT DEFERRABLE

- Puede ponerse DEFERRABLE, aunque se supone

6.3 Comprobación de restricciones

Modos de comprobación

(2)

32 Tema 6. Integridad en Sistemas de Bases de Datos Relacionales

• Sentencia

SET CONSTRAINTS

SET CONSTRAINTS {<restricciones> | ALL} {DEFERRED|IMMEDIATE}

- Establece el modopara varias RIs respecto de la transacciónSQL

actual

- Toda RI mencionada debe ser DEFERRABLE · puesALL ≡todas las RIs diferibles

§ DEFERREDhace que todaslas RI (mencionadas) pasen a modo diferido

§ IMMEDIATEhace que pasen a modo inmediato y son comprobadas:

si fallala comprobación de algunaRI, falla SET CONSTRAINTS y ningunaRI cambia de modo

COMMITÆSET CONSTRAINTS ALL IMMEDIATESi unacomprobación de alguna RI falla

ðCOMMITfalla

ðla transaccióncompleta falla(rollback)

6.3 Comprobación de restricciones

Referencias

Documento similar

La campaña ha consistido en la revisión del etiquetado e instrucciones de uso de todos los ter- mómetros digitales comunicados, así como de la documentación técnica adicional de

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

En estos últimos años, he tenido el privilegio, durante varias prolongadas visitas al extranjero, de hacer investigaciones sobre el teatro, y muchas veces he tenido la ocasión

que hasta que llegue el tiempo en que su regia planta ; | pise el hispano suelo... que hasta que el

(1886-1887) encajarían bien en una antología de textos históricos. Sólo que para él la literatura es la que debe influir en la historia y no a la inversa, pues la verdad litera- ria

d) que haya «identidad de órgano» (con identidad de Sala y Sección); e) que haya alteridad, es decir, que las sentencias aportadas sean de persona distinta a la recurrente, e) que

La siguiente y última ampliación en la Sala de Millones fue a finales de los años sesenta cuando Carlos III habilitó la sexta plaza para las ciudades con voto en Cortes de

Las manifestaciones musicales y su organización institucional a lo largo de los siglos XVI al XVIII son aspectos poco conocidos de la cultura alicantina. Analizar el alcance y