Vous êtes sur la page 1sur 29

Administracin de Base de Datos

Integridad

Prof Mercy Ospina Torres


mercy.ospinat@gmail.com
Prof Renny A. Hernandez
renny.hernandez@ciens.ucv.ve

Contenido
El DBA
El SMBD
Manejo de Memoria

Restauracin

Concurrencia
Concurrencia
Diccionario Datos
Proc. Consultas
Integridad

Qu es integridad de los datos?


Reglas de integridad y tipos
Dominio
Relacin y BD
Transicin

Reglas de integridad en SQL

Claves
Check
Dominios y aserciones
Disparadores

Seguridad

Marzo 2012

Administracin de Base de Datos

Componentes del SMBD


El DBA
El SMBD

Precompilado
r del DML

Manejo de Memoria

Restauracin
Concurrencia
Diccionario Datos
Proc. Consultas
Integridad
Integridad

M
B
D

Cdigo
objeto de
programas
de
aplicacin

Motor de
evaluacin de
consultas

Gestor de
transaccion
es
Gestor de
archivos

Consultas
DML

Compilado
r del DML
Procesador
de Consultas

Gestor de
autorizaci
n e
integridad
Gestor de

Gestor de
memoria
intermedi
a

almacenamiento

Seguridad
Archivo
s de
Datos
Marzo 2012

ndice
s

Interprete
del DDL

Datos
estadstic
os

Administracin de Base de Datos

Diccionari
o de
datos
3

Almacenamiento
en disco

Integridad
El DBA

Exactitud

El SMBD

Correctitud

Manejo de Memoria

Restauracin

BD
Concurrencia
Diccionario Datos
Proc. Consultas
Integridad
Integridad
Seguridad

Marzo 2012

Validez

El formato
Los valores posibles

Reglas de integridad
Cmo saber si un dato es correcto, exacto o vlido?
Un peso
Reglas de negocio
Una nota
El saldo de una cuenta
Una fecha
Las unidades de crdito a inscribir
Administracin de Base de Datos

Reglas de integridad
El DBA
El SMBD
Manejo de Memoria

Restauracin
Concurrencia
Diccionario Datos
Proc. Consultas

Permiten
Monitorear los cambios a la BD para verificar
que se cumplen las reglas de negocio
Tomar acciones si no se cumplen las reglas

Se almacenan en el diccionario de
datos
Al crear una nueva regla el SMBD debe
garantizar que los datos la satisfagan, de
lo contrario no ser almacenada.

Integridad
Integridad
Seguridad

Marzo 2012

Administracin de Base de Datos

Tipos de reglas de integridad


El DBA

El SMBD
Manejo de Memoria

Restricciones de tipo o dominio: Especifica los


valores vlidos para un tipo, es cual es escalar.

Restauracin

Restricciones de relacin: Especifica los valores


vlidos para una relacin con respecto a valores de
atributos dentro de la misma relacin

Concurrencia
Diccionario Datos
Proc. Consultas
Integridad
Integridad
Seguridad

Marzo 2012

Por ejemplo los valores de una nota debe estar entre 1 y 20

Por ejemplo el estatus de los proveedores de la ciudad de Caracas


debe ser mayor que 4

Restricciones de base de datos Especifica los valores


vlidos para una relacin con respecto a valores de
atributos de otra relacin

Por ejemplo, clave foranea

Date, C. J. (2001). Introduccin a los Sistemas de


Bases de Datos (7ma. ed.). PEARSON EDUCACION.
Administracin de Base de Datos

Reglas de integridad

El DBA
El SMBD
Manejo de Memoria

Para que el subsistema de integridad de un SMBD


pueda:
Monitorear las transacciones y detectar violaciones de
integridad
Si ocurre una violacin tomar las acciones necesarias

Restauracin
Concurrencia
Diccionario Datos
Proc. Consultas
Integridad
Seguridad

Conjunto
de

reglas de integridad

Condicin de Activacin: Cuando


chequear la regla (al momento de
insercin, actualizacin eliminacin)
El predicado a chequear: expresa
la condicin que deben cumplir los datos
Involucrados en la actualizacin
Acciones a tomar: Indica que es lo que
se va a hacer en caso de que no se
cumpla el predicado exigido

Tipos de reglas de integridad


El DBA
El SMBD
Manejo de Memoria

Restauracin
Concurrencia
Diccionario Datos
Proc. Consultas

Restricciones de tipo o dominio


TYPE <nombre tipo> <representacin posible>

TYPE PESO POSSREP (DECIMAL (5,1))


CONSTRAINT THE_PESO (PESO) > 0.0
POSSREP: Representacin posible
THE_ Es una seudovariable que invoca al operador
THE, el cual designa el componente especificado
de su argumento.

Integridad
Integridad
Seguridad

Marzo 2012

Date, C. J. (2001). Introduccin a los Sistemas de


Bases de Datos (7ma. ed.). PEARSON EDUCACION.
Administracin de Base de Datos

Tipos de reglas de integridad


El DBA
El SMBD
Manejo de Memoria

Restauracin
Concurrencia
Diccionario Datos
Proc. Consultas
Integridad
Integridad
Seguridad

Restricciones de tipo o dominio


TYPE NOTA POSSREP (INTEGER)
CONSTRAINT THE_NOTA (NOTA)>0 AND
THE_NOTA(NOTA)<=20
TYPE COLORPRIM POSSREP (CHAR(10))
CONSTRAINT THE_COLORPRIM (COLORPRIM) IN
{AMARILLO, AZUL, ROJO}
TYPE CLAVEP POSREP (CHAR(5)
CONSTRAINT
SUBSTRING(THE_CLAVEP(CLAVEP),1,1)=P AND
IS_NUMERIC(SUBSTRING(THE_CLAVEP(CLAVEP),2
,5)

Date, C. J. (2001). Introduccin a los Sistemas de


Bases de Datos (7ma. ed.). PEARSON EDUCACION.
Marzo 2012

Administracin de Base de Datos

Tipos de reglas de integridad


El DBA

Restricciones de relacin
CONSTRAINT <nombre restriccin> <definicin restriccin>

El SMBD
Manejo de Memoria

CONSTRAINT R4P IS_EMPTY (PROVEEDOR WHERE


CIUDAD =Caracas AND ESTATUS<>20)

Restauracin
Concurrencia
Diccionario Datos

Los proveedores de Caracas deben tener un


estatus de 20

Proc. Consultas
Integridad
Integridad
Seguridad

Marzo 2012

Date, C. J. (2001). Introduccin a los Sistemas de


Bases de Datos (7ma. ed.). PEARSON EDUCACION.
Administracin de Base de Datos

10

Tipos de reglas de integridad


El DBA
El SMBD
Manejo de Memoria

Restauracin
Concurrencia
Diccionario Datos
Proc. Consultas
Integridad
Integridad
Seguridad

Marzo 2012

Restricciones de estado: se ocupan de los estados


correctos de la base de datos

Restricciones
de
transicin:
se
refieren
a
restricciones sobre el cambio de la base de datos de un
estado correcto a otro. P.e las restricciones sobre un
estado civil
Transiciones
vlidas
Soltero a casado
Casado a viudo
a
Casado
divorciado
Viudo a casado
a
Divorciado
casado

Transiciones
invlidas
Soltero a viudo
a
Soltero
divorciado
Viudo a divorciado
Divorciado a viudo
Viudo a soltero
Casado a soltero
a
Divorciado
soltero

Administracin de Base de Datos

11

Tipos de reglas de integridad


El DBA

Restricciones de transicin:

El SMBD
Manejo de Memoria

Restauracin
Concurrencia
Diccionario Datos

CONSTRAINT R4P IS_EMPTY(((PROVEEDOR {CodP, ESTATUS})


RENAME ESTATUS AS ESTATUS JOIN PROVEEDOR
{CodP, ESTATUS} ) WHERE ESTATUS >ESTATUS)

Los provedores no pueden disminuir de estatus


Se asume para los valores de la relacin antes del cambio.

Proc. Consultas
Integridad
Integridad
Seguridad

Marzo 2012

Administracin de Base de Datos

12

Reglas de Integridad en SQL


El DBA
El SMBD
Manejo de Memoria

Restauracin

Integridad en SQL
Datos requeridos
Claves
Generales
Clausula CHECK
Dominios

Concurrencia
Diccionario Datos

Aserciones (Assertion)

Disparadores (Triggers)

Proc. Consultas
Integridad
Integridad
Seguridad

Marzo 2012

Administracin de Base de Datos

20

Reglas de Integridad en SQL


El DBA
El SMBD
Manejo de Memoria

Datos requeridos
Algunas columnas deben tener un valor vlido y no
est permitido que tengan valores nulos
Se debe especificar en la instruccin DDL para crear
o modificar tablas

Restauracin
Concurrencia
Diccionario Datos

Nombre VARCHAR(20) NOT NULL

Proc. Consultas
Integridad
Integridad
Seguridad

Marzo 2012

Administracin de Base de Datos

21

Reglas de Integridad en SQL


El DBA
El SMBD
Manejo de Memoria

Restauracin
Concurrencia
Diccionario Datos
Proc. Consultas
Integridad
Integridad
Seguridad

Marzo 2012

Claves
Integridad de entidad: cada tupla es nica y se
identifica univocamente con un conjunto de
atributos llamados clave primaria.
Se define en la instruccin DDL para crear o
modificar tablas.
CREATE TABLE Estudiante (
CI integer,
nombre VARCHAR(20),
Sexo SexType NOT NULL,
telfono VARCHAR(20),
PRIMAY KEY (CI);

Administracin de Base de Datos

22

Reglas de Integridad en SQL


El DBA
El SMBD
Manejo de Memoria

Claves
Integridad de entidad
Para definir una clave compuesta se especifican
todos los nombres de las columnas en la clausuala
PRIMARY KEY

Restauracin

PRIMAY KEY (CI, CodMat,Semestre);

Concurrencia
Diccionario Datos
Proc. Consultas

Si hay mas de una clave, se llaman claves


candidatas y deben cumplir que no deben ser nulas
y su valores son nicos

Integridad
Integridad
Seguridad

Marzo 2012

RIF CHAR(11) NOT NULL


UNIQUE(RIF)
Administracin de Base de Datos

23

Reglas de Integridad en SQL


El DBA
El SMBD
Manejo de Memoria

Restauracin
Concurrencia

Claves
Integridad referencial: Las claves externas son
definidas por la clausula FOREING KEY
Se implementa mediante la clausula
FOREING KEY(<atributo>) REFERENCES
<tabla_padre>[(<atributo_tpadre>)] [accin referencial]

en las instrucciones CREATE y ALTER TABLE,

Diccionario Datos
Proc. Consultas

Estudiante
CI

Tabla padre

Integridad
Integridad
Seguridad

Marzo 2012

Tabla hijo

Administracin de Base de Datos

Cursa
CI
24

Reglas de Integridad en SQL


El DBA
El SMBD
Manejo de Memoria

Integridad referencial
La accin referencial indica que hacer en caso de la
actualizacin o eliminacin de la clave en la tabla
padre con las clausulas ON UPDATE y ON DELETE
CASCADE: borra las filas/actualiza claves externas
de las filas, correspondientes en la tabla hijo.

Restauracin
Concurrencia
Diccionario Datos
Proc. Consultas
Integridad
Integridad
Seguridad

Marzo 2012

SET NULL: asigna el valor NULL a la clave externa


de las filas correspondientes en la tabla hijo, si la
Si se borra/ clave externa permite NULL.
SET DEFAULT: asigna el valor predeterminado a la
actualiza
una clave clave externa de las filas correspondientes en la tabla
en la tabla hijo, si se ha especificado un valor DEFAULT para la
clave externa.

padre

NO ACTION: rechaza la operacin de borrado o


actualizacin de la tabla padre, es la accin
predeterminada.
Administracin de Base de Datos

25

Reglas de Integridad en SQL


El DBA
El SMBD
Manejo de Memoria

Restauracin

Restricciones Generales
Clausula CHECK: define una restriccin sobre los
valores que puede tomar un atributo.
CHECK (VALUE >=1 AND VALUE
<= 20));
Se puede usar directamente en la definicin de una
tabla y puede tener expresiones SQL

Concurrencia
Diccionario Datos
Proc. Consultas
Integridad
Integridad
Seguridad

Marzo 2012

CREATE TABLE Cursa (


CI Integer,
CodMat Smallint,
Semestre Char(6),
Nota Integer,
PRIMARY KEY (CI, CodMat,
Semestre),
CHECK (Nota >=1 AND Nota <= 20));
Administracin de Base de Datos

26

Reglas de Integridad en SQL


El DBA
El SMBD
Manejo de Memoria

Restauracin
Concurrencia
Diccionario Datos
Proc. Consultas
Integridad
Integridad
Seguridad

Marzo 2012

Restricciones de dominio
En SQL se pueden definir nuevos dominios (tipos)
con nombre que se podrn usar en la definicion de
tablas
CREATE DOMAIN valnota INTEGER DEFAULT 1
CHECK (VALUE >=1 AND VALUE <= 20));

CREATE TABLE Cursa (


CI Integer,
CodMat Smallint,
Semestre Char(6),
Nota valnota,
.

Administracin de Base de Datos

27

Reglas de Integridad en SQL


El DBA
El SMBD
Manejo de Memoria

Aserciones (Assertion)
Restricciones que no estn asociadas a una tabla en
particular
Se verifica su cumplimiento para todos los casos

Restauracin
Concurrencia
Diccionario Datos
Proc. Consultas

CREATE ASSERTION incripcionAlumno


CHECK (NOT EXISTS (SELECT CI, SEMESTRE FROM
inscribe I, materia M WHERE I.codM = M.codM GROUP
BY CI, SEMESTRE
HAVING SUM(Materia.creditos) > 24))

Integridad
Integridad
Seguridad

Marzo 2012

Administracin de Base de Datos

28

Reglas de Integridad en SQL


El DBA
El SMBD
Manejo de Memoria

Restauracin
Concurrencia
Diccionario Datos
Proc. Consultas

Disparadores (Triggers)
Son procedimientos que el SMBD invoca
automticamente cuando un cambio de estado en la
BD cumple con ciertas condiciones. Su descripcin
contiene tres partes.
Evento: Una modificacin de la base de datos que
activa el disparador.
Condicin: Una condicin o consulta (falsa si el
conjunto de respuesta es vacio) que se ejecuta cuando
se activa el disparador.
Accin: Un procedimiento que se ejecuta cuando se
activa el disparador y la condicin es verdadera

Integridad
Integridad
Seguridad

Marzo 2012

Administracin de Base de Datos

29

Reglas de Integridad en SQL


El DBA
El SMBD
Manejo de Memoria

Restauracin
Concurrencia
Diccionario Datos
Proc. Consultas
Integridad
Integridad
Seguridad

Marzo 2012

Disparadores (Sintaxis)
CREATE TRIGGER <nombre disparador> <momento> <evento de
activacin> ON <nombre tabla>
[REFERENCING OLD ROW AS O, NEW ROW AS N]
[FOR EACH ROW]
[WHEN <condicin>]
[BEGIN] accin [END]
Donde;
momento: BEFORE (antes) o AFTER (despus), indica que
se
ejecuta antes o despus de la sentencia que lo activa.
Evento de activacin: INSERT, UPDATE, o DELETE.
FOR EACH ROW Indica que el disparador ser por cada fila de la
tabla
BEGIN END se usa para definir un bloque que contiene varias
sentencias SQL
Administracin de Base de Datos

30

Reglas de Integridad en SQL


El DBA

Disparadores (Ejemplo SQL99)

El SMBD
Manejo de Memoria

Restauracin
Concurrencia
Diccionario Datos
Proc. Consultas
Integridad
Integridad

CREATE TRIGGER NotaValida BEFORE INSERT OR UPDATE ON


CURSA
REFERENCING NEW ROW AS N
FOR EACH ROW
WHEN (N.nota > 20 or N.nota<1)
BEGIN
PRINT(Nota no valida, los valores deben estar entre 1
y
20);
END

Seguridad

Marzo 2012

Administracin de Base de Datos

31

Reglas de Integridad en SQL


El DBA

Disparadores (Ejemplo Oracle)

El SMBD
Manejo de Memoria

Restauracin
Concurrencia
Diccionario Datos
Proc. Consultas
Integridad
Integridad

CREATE TRIGGER NotaValida BEFORE INSERT OR UPDATE ON


CURSA
FOR EACH ROW
BEGIN
IF (:new. nota > 20 or (:new. Nota < 1 ) THEN
RAISE_APPLICATION_ERROR(-20000, Nota no valida, los
valores deben estar entre 1 y 20 ');
END IF;
END

Seguridad

Marzo 2012

Administracin de Base de Datos

32

Reglas de Integridad en SQL


El DBA

Disparadores (Ejemplo 2 Oracle)

El SMBD
Manejo de Memoria

Restauracin
Concurrencia
Diccionario Datos
Proc. Consultas
Integridad
Integridad

CREATE TRIGGER StatusValido BEFORE INSERT OR UPDATE ON


PROVEEDOR
FOR EACH ROW
BEGIN
IF (:new.status < :old.status ) THEN
RAISE_APPLICATION_ERROR(-20000, El status nuevo no
puede ser menor al existente');
END IF;
END

Seguridad

Marzo 2012

Administracin de Base de Datos

33

Reglas de Integridad en SQL


El DBA
El SMBD
Manejo de Memoria

Restauracin
Concurrencia
Diccionario Datos
Proc. Consultas
Integridad
Integridad
Seguridad

Marzo 2012

Disparadores (Ejemplo 2)
CREATE TRIGGER PesoValido BEFORE INSERT OR UPDATE ON PARTES
FOR EACH ROW
BEGIN
CASE
WHEN INSERTING THEN
IF (:new.color=rojo ) THEN
IF (:new.peso<25) THEN
RAISE_APPLICATION_ERROR(-20000, Error en el peso'); END
IF END IF;
WHEN UPDATING(peso') THEN
IF (:old.color=rojo ) THEN
IF (:new.peso<25) THEN
RAISE_APPLICATION_ERROR(-20000, Error en el peso'); END
IF END IF;
WHEN UPDATING(color') THEN
IF (:new.color=rojo ) THEN
IF (:old.peso<25) THEN
RAISE_APPLICATION_ERROR(-20000, Error en el peso'); END
IF END IF; END CASE
END
Administracin de Base de Datos

34

Reglas de Integridad en SQL


El DBA
El SMBD
Manejo de Memoria

Restauracin
Concurrencia

Disparadores (Ejemplo 3)
CREATE TRIGGER UnidadesInscritas BEFORE INSERT ON INSCRIPCIN
FOR EACH ROW
DECLARE
uninscritas number;
unimateria number;
BEGIN
SELECT sum (M.creditos) INTO uniscritas FROM inscripcion I, materia M
WHERE I.codM = M.codM AND I.CI = :new.CI and I.SEMESTRE =
:new.semestre;

Diccionario Datos
Proc. Consultas
Integridad
Integridad
Seguridad

SELECT M.creditos INTO unimateria FROM materia M


WHERE M.codM = :new.CodM;
IF (uniscritas+unimateria > 24 ) THEN
RAISE_APPLICATION_ERROR(-20000, exceso de creditos');
END IF;
END

Marzo 2012

Administracin de Base de Datos

35

Reglas de Integridad en SQL


El DBA

Disparadores (Ejemplo 3)

El SMBD
Manejo de Memoria

Restauracin
Concurrencia
Diccionario Datos
Proc. Consultas
Integridad
Integridad
Seguridad

Marzo 2012

CREATE TRIGGER UnidadesInscritas AFTER INSERT OR UPDATE ON


INSCRIPCIN
FOR EACH ROW
DECLARE
uninscritas number;
BEGIN
SELECT sum (M.creditos) INTO uniscritas FROM inscripcion I, materia M
WHERE I.codM = M.codM AND I.CI = :new.CI and I.SEMESTRE =
:new.semestre;
IF (uniscritas > 24 ) THEN
RAISE_APPLICATION_ERROR(-20000, exceso de creditos');
END IF;
END

Administracin de Base de Datos

36