John Freddy Duitama M. U.de.A. Facultad de Ingeniera.
Creacin del esquema de Una Base
de Datos.
John Freddy Duitama Muoz.
Facultad de Ingeniera. U.de.A. John Freddy Duitama M. U.de.A. Facultad de Ingeniera. Restricciones de Integridad en una B. de D. Relacional.
Aseguran que los cambios realizados a una B. de D. no provoque prdida de consistencia en la informacin.
1. Restricciones de dominio: Conjunto de valores y de operaciones permitidas sobre ellos.
Dominios base para S.Q.L : CHAR(p) : cadena de caracteres de longitud fija p. VARCHAR2(p) : cadena de caracteres de longitud variable. Mxima longitud p. NUMBER(p,s) : valor numrico de precisin p y escala s. DATE : fecha vlidas. XMLType Etc.
Nota: Es posible para el programador definir sus propios tipos de datos. John Freddy Duitama M. U.de.A. Facultad de Ingeniera.
2. Valores nulos : Un atributo puede o no admitir valores nulos. Clusula NOT NULL en S.Q.L
3. Integridad Referencial: Garantiza la existencia de las claves ajenas. Clusula REFERENCES en S.Q.L.
4. Clave primaria : Garantiza la unicidad y obligatoriedad del o los atributos definidos como clave primaria. Clusula PRIMARY KEY en S.Q.L.
5. Clave candidata : Debe ser nica y obligatoria. Clusula UNIQUE en S.Q.L.
Restricciones de Integridad en una B. de D. Relacional.
John Freddy Duitama M. U.de.A. Facultad de Ingeniera.
CREATE TABLE departamento ( cdigo NUMBER(6) PRIMARY KEY, nombre VARCHAR2(6) NOT NULL UNIQUE, ciudad VARCHAR2(12) CHECK (ciudad IN (Medelln,Bogot,Cali) , );
CREATE TABLE empleado ( cdula NUMBER(10) PRIMARY KEY, nombre VARCHAR2(30) NOT NULL, jefe NUMBER(10) REFERENCES empleado, salario NUMBER(10,2) NOT NULL, comisin NUMBER(2) , cargo VARCHAR2(20) NOT NULL, depto NUMBER(6) NOT NULL REFERENCES departamento ); CREACIN DE UNA TABLA EN S.Q.L. John Freddy Duitama M. U.de.A. Facultad de Ingeniera. CREATE TABLE departamento ( cdigo NUMBER(6), nombre VARCHAR2(6) NOT NULL UNIQUE, ciudad VARCHAR2(12) CHECK (ciudad IN (Medelln,Bogot,Cali) , PRIMARY KEY(cdigo) );
CREATE TABLE empleado ( cdula NUMBER(10) PRIMARY KEY, nombre VARCHAR2(30) NOT NULL, jefe NUMBER(10) , salario NUMBER(10,2) NOT NULL, cargo VARCHAR2(20) NOT NULL, depto NUMBER(6) REFERENCES departamento ON UPDATE SET NULL ON DELETE CASCADE, FOREIGN KEY jefe REFERENCES empleado(cdula)); CREACIN DE UNA TABLA EN S.Q.L. John Freddy Duitama M. U.de.A. Facultad de Ingeniera.
Involucra expresiones como las que aparecen en el WHERE. Si involucra otros atributos u otra relacin debe ser mediante sub- consultas. Sintaxis : CHECK ( condicin) Se valida si el atributo cambia. (Insert o Update).
CREATE TABLE empleado ( cdula NUMBER(10) PRIMARY KEY, nombre VARCHAR2(30) NOT NULL, jefe NUMBER(10) REFERENCES empleado(cdula), salario NUMBER(10,2) NOT NULL CHECK ( salario > 0 ) , sexo CHAR(1) CHECK ( sexo IN (F,M)), comisin NUMBER(3) CHECK ( comision between 0 and 100 ) , cargo VARCHAR2(20) NOT NULL, depto NUMBER(6) NOT NULL REFERENCES departamento ); Las reglas CHECK para atributos: John Freddy Duitama M. U.de.A. Facultad de Ingeniera.
CREATE TABLE empleado ( cdula NUMBER(10) PRIMARY KEY, nombre VARCHAR2(30) NOT NULL, depto NUMBER(6) NOT NULL REFERENCES departamento); Traduccin del modelo E/R Departamento
#cdigo nombre Empleado #cdula Nombre
John Freddy Duitama M. U.de.A. Facultad de Ingeniera.
CREATE TABLE grupo ( curso VARCHAR2(3) REFERENCES curso, numero NUMBER(2), cupo NUMBER(6) , PRIMARY KEY(curso, numero)
Traduccin del modelo E/R Curso #cdigo Nombre crditos Grupo #numero cupo
John Freddy Duitama M. U.de.A. Facultad de Ingeniera.
John Freddy Duitama M. U.de.A. Facultad de Ingeniera. Reglas de la forma : evento-condicin -accin.
Usos:
Permiten adicionar reglas a la Base de Datos. Para auditoria de las operaciones. Para adicionar mecanismos de seguridad. Complemento de las reglas definidas en el esquema. Para garantizar rplicas de informacin en ambientes distribuidos Para clculo de valores derivados.
Problemas:
Se hace complejo su seguimiento. Pueden generar ciclos infinitos. Disparadores. John Freddy Duitama M. U.de.A. Facultad de Ingeniera.
De fila: Se ejecuta una vez por cada fila modificada por la instruccin SQL que active el disparador Se define con La clausula FOR EACH ROW
En los disparadores de fila puedo referirme a los valores anteriores (old) y nuevos en la tupla (new)
De declaracin: Se activa una vez por cada instruccin SQL sin importar las tuplas que modifique.
Tipos de disparadores. John Freddy Duitama M. U.de.A. Facultad de Ingeniera. Eventos : INSERT - UPDATE - DELETE. Puede activarse: BEFORE - AFTER - INSTEAD OF de la instruccin S.Q.L.
Usos: BEFORE: para validaciones, controles. AFTER: auditoria. INSTEAD OF: Operaciones sobre vistas.
Condicin: Despus de presentado el evento la condicin determina cuando o no se ejecuta la accin del disparador. (usada solo para disparadores de fila)
Accin : Programa que se ejecuta al ocurrir el evento y ser cierta la condicin. Partes de un Disparador. John Freddy Duitama M. U.de.A. Facultad de Ingeniera.
CREATE OR REPLACE TRIGGER verifica_salario BEFORE INSERT OR UPDATE(salario , jefe) ON empleados FOR EACH ROW WHEN ( :new.jefe is not null ) DECLARE v_salario NUMBER(8); BEGIN Select salario INTO v_salario FROM empleados WHERE cedula = :new.jefe; IF :new.salario > v_salario THEN RAISE_APPLICATION_ERROR(-20400,El empleado no puede ganar ms que su jefe); END IF; END; Ejemplo disparador. Evento Condicin Accin John Freddy Duitama M. U.de.A. Facultad de Ingeniera.
Bibiografa.
Jeffrey D. Ullman. and Jennifer Widom. A First Course in Database Systems. Prentice Hall. 1997.
Henry F. Korth, Abraham Silberschatz. Fundamentos de Bases de Datos. Cuarta edicin. 200.