Abd Integridad

download Abd Integridad

of 29

description

bases de datos, integridad, restricciones

Transcript of Abd Integridad

Administracin de Base de datos Recuperacin

IntegridadProf Mercy Ospina Torres [email protected] Renny A. Hernandez [email protected]

Administracin de Base de Datos 1ContenidoMarzo 2012Administracin de Base de Datos2Qu es integridad de los datos?Reglas de integridad y tiposDominioRelacin y BDTransicinReglas de integridad en SQLClaves CheckDominios y asercionesDisparadores

ConcurrenciaEl DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracin2Componentes del SMBDMarzo 2012Administracin de Base de Datos3

IntegridadProcesador de ConsultasGestor de almacenamientoSMBDPrecompilador del DMLCdigo objeto de programas de aplicacinMotor de evaluacin de consultasConsultas DMLCompilador del DMLInterprete del DDLGestor de transaccionesGestor de archivosGestor de memoria intermediaGestor de autorizacin e integridadArchivos de DatosndicesDiccionario de datosDatos estadsticosAlmacenamiento en discoEl DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracin3IntegridadMarzo 2012Administracin de Base de Datos4

Integridad

ExactitudCorrectitudValidezCmo saber si un dato es correcto, exacto o vlido?Un pesoUna notaEl saldo de una cuentaUna fechaLas unidades de crdito a inscribirBDEl formatoLos valores posiblesReglas de negocioReglas de integridadEl DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracin4Reglas de integridadMarzo 2012Administracin de Base de Datos5PermitenMonitorear los cambios a la BD para verificar que se cumplen las reglas de negocioTomar acciones si no se cumplen las reglasSe almacenan en el diccionario de datosAl crear una nueva regla el SMBD debe garantizar que los datos la satisfagan, de lo contrario no ser almacenada.

IntegridadEl DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracin5Tipos de reglas de integridadMarzo 2012Administracin de Base de Datos6Restricciones de tipo o dominio: Especifica los valores vlidos para un tipo, es cual es escalar.Por ejemplo los valores de una nota debe estar entre 1 y 20Restricciones de relacin: Especifica los valores vlidos para una relacin con respecto a valores de atributos dentro de la misma relacinPor ejemplo el estatus de los proveedores de la ciudad de Caracas debe ser mayor que 4Restricciones de base de datos Especifica los valores vlidos para una relacin con respecto a valores de atributos de otra relacinPor ejemplo, clave foranea

Date, C. J. (2001). Introduccin a los Sistemas de Bases de Datos (7ma. ed.). PEARSON EDUCACION.

IntegridadEl DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracin

Condicin de Activacin: Cuando chequear la regla (al momento deinsercin, actualizacin eliminacin)El predicado a chequear: expresa la condicin que deben cumplir los datosInvolucrados en la actualizacin

Acciones a tomar: Indica que es lo que se va a hacer en caso de que no se cumpla el predicado exigidoReglas de integridadPara que el subsistema de integridad de un SMBD pueda: Monitorear las transacciones y detectar violaciones de integridadSi ocurre una violacin tomar las acciones necesarias

Conjunto de reglas de integridad

El DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracin7Una condicin de activacin: dice 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 en caso de que no se cumpla el predicado: indica que es lo que se va a hacer en caso de que no se cumpla el predicado exigido (rollback o colocar un valor por defecto, por ejemplo) Por ejemplo, la restriccin: SIR1: AFTER UPDATING S.STATUS:S. STATUS > O ELSEDO;set return code to "regla SIR1 violada";REJECT;END;Las reglas de integridad pueden ser divididas en dos grandes categoras: Reglas de integridad de dominios: tienen que ver con la admisin deun valor dado como valor candidato para un atributo dado,independientemente de su relacin con otros valores en la bd. Reglas de integridad de relaciones: tienen que ver con la admisin deuna tupla dada como candidata para la insercin en una relacin dada ocon la relacin entre tuplas de una relacin o de varias relaciones.

Tipos de reglas de integridadMarzo 2012Administracin de Base de Datos8Restricciones de tipo o dominioTYPE Date, C. J. (2001). Introduccin a los Sistemas de Bases de Datos (7ma. ed.). PEARSON EDUCACION.

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

El DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracinTipos de reglas de integridadMarzo 2012Administracin de Base de Datos9Restricciones de tipo o dominioDate, C. J. (2001). Introduccin a los Sistemas de Bases de Datos (7ma. ed.). PEARSON EDUCACION.

IntegridadTYPE NOTA POSSREP (INTEGER)CONSTRAINT THE_NOTA (NOTA)>0 AND THE_NOTA(NOTA)ESTATUS)

Los provedores no pueden disminuir de estatus Se asume para los valores de la relacin antes del cambio.

El DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracinTipos de reglas de integridadMarzo 2012Administracin de Base de Datos13Restricciones de tipo o dominio

IntegridadAtributo Dominio Valor Dominio

Sintaxis BNF para reglas de dominios seria:

Definicin-de-dominio::=DCL nb-de-dominio [PRIMARY] DOMAIN restriccin terminador

restriccin::= tipo-de-dato [predicado]

terminador: :=; I ELSE respuesta-a-la-violacin

respuesta-a-la-violacin::= unidad-de-cdigo-ejecutableEl DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracinTipos de reglas de integridadMarzo 2012Administracin de Base de Datos14Restricciones de tipo o dominio

IntegridadDCL NOMBRE DOMAIN CHAR (20);

DCL COLOR DOMAIN CHAR(10) COLOR IN IN ('ROJO', VERDE', AZUL', MARRON');

DCL PESO DOMAIN FIXED (5,1) PESO > O AND PESO < 2000;

DCL SEXO DOMAIN CHAR (1) SEXO IN (F,M);

DCL QTY DOMAIN FIXED (5) QTY > = 0;

DCL LOCATION DOMAIN CHARACTER (20) VARYINGLOCATION IN ('London', 'Paris', Rome1, 'Atenas');El DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracinTipos de reglas de integridadMarzo 2012Administracin de Base de Datos15Restricciones de tipo o dominio para claves primarias

IntegridadDCL P#PRIMARY DOMAIN CHAR(6) AND IS NUMERIC(SUBSTR(P#, 2,5))ELSEDO;set return code to "Regla de dominio de P# violada";REJECT;END;El DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracinTipos de reglas de integridadMarzo 2012Administracin de Base de Datos16Restricciones de relacinDate, C. J. (2001). Introduccin a los Sistemas de Bases de Datos (7ma. ed.). PEARSON EDUCACION.

IntegridadSintaxis BNF para definir reglas de integridad sobre relaciones es:

regla-de-integridad-sobre-relaciones ::= etiqueta: [lista-de-condiciones-de-activacin:] restriccin [; I ELSE respuesta-a-la-violacin]

condicin-de-activacin ::= WHEN COMMITTING | BEFORE cambio-before | AFTER cambio-afterEl DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracinTipos de reglas de integridadMarzo 2012Administracin de Base de Datos17Restricciones de relacinDate, C. J. (2001). Introduccin a los Sistemas de Bases de Datos (7ma. ed.). PEARSON EDUCACION.

Integridadcambio-before ::= INSERTING nombre-de-registro[ FROM nombre-de-estructura] | UPDATING parmetro-de-registro [FROM nombre-de-estructura] | UPDATING parmetro-de-campo [ FROM [ nombre-de-estructura.}nombre-de-elemento] | DELETING parmetro-de-registro

cambio-after ::= INSERTING parmetro-de-registro | UPDATING parmetro-de-registro | UPDATING parmetro-de-campo | DELETING parmetro-de-registro

El DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracinTipos de reglas de integridadMarzo 2012Administracin de Base de Datos18Restricciones de relacinDate, C. J. (2001). Introduccin a los Sistemas de Bases de Datos (7ma. ed.). PEARSON EDUCACION.

Integridadparmetro-de-registro ::= [nombre-de-cursor-] nombre-de-registro

parmetro-de-campo ::= [nombre-de-cursor->] nombre-de-registro. nombre-de-campo

Restriccin::= predicado

Respuesta-a-la-violacin::= unidad-ejecutableEl DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracinTipos de reglas de integridadMarzo 2012Administracin de Base de Datos19Restricciones de relacin

IntegridadRREL1 :BEFORE UPDATING S.STATUS FROM S:NEW_STATUS > S.STATUS El nuevo status del proveedor debe ser mayor que el actual

RREL2: AFTER INSERTING E1 EMPLEADO AFTER UPDATING E1 EMPLEADO.MGR#: EXISTS (E2 EMPLEADO WHERE E2 EMPLEADO.EMP#=E1 EMPLEADO.MGR#); El gerente de un empleado debe ser otro empleado

RREL3:WHEN COMMITTING:UPDATE CUENTA SET SALDO = SALDO + 0.1 * SALDO;

El DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracinReglas de Integridad en SQL Marzo 2012Administracin de Base de Datos20Integridad en SQLDatos requeridosClavesGeneralesClausula CHECKDominiosAserciones (Assertion)Disparadores (Triggers)

IntegridadEl DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracinReglas de Integridad en SQL Marzo 2012Administracin de Base de Datos21Datos requeridosAlgunas columnas deben tener un valor vlido y no est permitido que tengan valores nulosSe debe especificar en la instruccin DDL para crear o modificar tablas

IntegridadNombre VARCHAR(20) NOT NULLEl DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracinReglas de Integridad en SQL Marzo 2012Administracin de Base de Datos22ClavesIntegridad 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.

IntegridadCREATE TABLE Estudiante ( CI integer, nombre VARCHAR(20), Sexo SexType NOT NULL, telfono VARCHAR(20), PRIMAY KEY (CI); El DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracinReglas de Integridad en SQL Marzo 2012Administracin de Base de Datos23ClavesIntegridad de entidadPara definir una clave compuesta se especifican todos los nombres de las columnas en la clausuala PRIMARY KEY

Si hay mas de una clave, se llaman claves candidatas y deben cumplir que no deben ser nulas y su valores son nicos

IntegridadPRIMAY KEY (CI, CodMat,Semestre); RIF CHAR(11) NOT NULL UNIQUE(RIF) El DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracinReglas de Integridad en SQL Marzo 2012Administracin de Base de Datos24ClavesIntegridad referencial: Las claves externas son definidas por la clausula FOREING KEYSe implementa mediante la clausulaFOREING KEY() REFERENCES [()] [accin referencial] en las instrucciones CREATE y ALTER TABLE,

IntegridadTabla padreTabla hijoEstudianteCICursaCIEl DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracinReglas de Integridad en SQL Marzo 2012Administracin de Base de Datos25Integridad referencialLa 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

IntegridadSi se borra/ actualiza una clave en la tabla padreCASCADE: borra las filas/actualiza claves externas de las filas, correspondientes en la tabla hijo.SET NULL: asigna el valor NULL a la clave externa de las filas correspondientes en la tabla hijo, si la clave externa permite NULL.SET DEFAULT: asigna el valor predeterminado a la clave externa de las filas correspondientes en la tabla hijo, si se ha especificado un valor DEFAULT para la clave externa.NO ACTION: rechaza la operacin de borrado o actualizacin de la tabla padre, es la accin predeterminada.

El DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracinReglas de Integridad en SQL Marzo 2012Administracin de Base de Datos26Restricciones GeneralesClausula CHECK: define una restriccin sobre los valores que puede tomar un atributo.

Se puede usar directamente en la definicin de una tabla y puede tener expresiones SQL

IntegridadCHECK (VALUE >=1 AND VALUE =1 AND Nota =1 AND VALUE 24))

El DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracinReglas de Integridad en SQL Marzo 2012Administracin de Base de Datos29Disparadores (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

IntegridadEl DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracinReglas de Integridad en SQL Marzo 2012Administracin de Base de Datos30Disparadores (Sintaxis)

IntegridadCREATE TRIGGER ON [REFERENCING OLD ROW AS O, NEW ROW AS N][FOR EACH ROW] [WHEN ][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 tablaBEGIN END se usa para definir un bloque que contiene varias sentencias SQLEl DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracinReglas de Integridad en SQL Marzo 2012Administracin de Base de Datos31Disparadores (Ejemplo SQL99)

IntegridadCREATE TRIGGER NotaValida BEFORE INSERT OR UPDATE ON CURSAREFERENCING NEW ROW AS NFOR EACH ROW WHEN (N.nota > 20 or N.nota 20 or (:new. Nota < 1 ) THENRAISE_APPLICATION_ERROR(-20000, Nota no valida, los valores deben estar entre 1 y 20 ');END IF;END

El DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracin32Reglas de Integridad en SQL Marzo 2012Administracin de Base de Datos33Disparadores (Ejemplo 2 Oracle)

IntegridadCREATE TRIGGER StatusValido BEFORE INSERT OR UPDATE ON PROVEEDORFOR EACH ROW

BEGIN IF (:new.status < :old.status ) THENRAISE_APPLICATION_ERROR(-20000, El status nuevo no puede ser menor al existente');END IF;END

El DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracin33Reglas de Integridad en SQL Marzo 2012Administracin de Base de Datos34Disparadores (Ejemplo 2)

IntegridadCREATE TRIGGER PesoValido BEFORE INSERT OR UPDATE ON PARTESFOR EACH ROW BEGIN CASE WHEN INSERTING THENIF (:new.color=rojo ) THENIF (:new.peso 24 ) THENRAISE_APPLICATION_ERROR(-20000, exceso de creditos');END IF;

ENDEl DBAConcurrenciaDiccionario DatosIntegridadSeguridadProc. ConsultasEl SMBDManejo de MemoriaRestauracin36