La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

John Freddy Duitama M.U.de.A. Facultad de Ingeniería. Creación del esquema de Una Base de Datos. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A.

Presentaciones similares


Presentación del tema: "John Freddy Duitama M.U.de.A. Facultad de Ingeniería. Creación del esquema de Una Base de Datos. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A."— Transcripción de la presentación:

1 John Freddy Duitama M.U.de.A. Facultad de Ingeniería. Creación del esquema de Una Base de Datos. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A.

2 John Freddy Duitama M.U.de.A. Facultad de Ingeniería. Restricciones de Integridad en una B. de D. Relacional. Aseguran que los cambios realizados a una B. de D. no provoque pérdida de consistencia en la información. 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. Máxima longitud p. NUMBER(p,s) : valor numérico de precisión p y escala s. DATE : fecha válidas. XMLType Etc. Nota: Es posible para el programador definir sus propios tipos de datos.

3 John Freddy Duitama M.U.de.A. Facultad de Ingeniería. 2. Valores nulos : Un atributo puede o no admitir valores nulos. Cláusula NOT NULL en S.Q.L 3. Integridad Referencial: Garantiza la existencia de las claves ajenas. Cláusula REFERENCES en S.Q.L. 4. Clave primaria : Garantiza la unicidad y obligatoriedad del o los atributos definidos como clave primaria. Cláusula PRIMARY KEY en S.Q.L. 5. Clave candidata : Debe ser única y obligatoria. Cláusula UNIQUE en S.Q.L. Restricciones de Integridad en una B. de D. Relacional.

4 John Freddy Duitama M.U.de.A. Facultad de Ingeniería. CREATE TABLE departamento ( código NUMBER(6) PRIMARY KEY, nombre VARCHAR2(6) NOT NULL UNIQUE, ciudad VARCHAR2(12) CHECK (ciudad IN (‘Medellín’,’Bogotá’,’Cali’), ); CREATE TABLE empleado ( cédula NUMBER(10) PRIMARY KEY, nombre VARCHAR2(30) NOT NULL, jefe NUMBER(10) REFERENCES empleado, salario NUMBER(10,2) NOT NULL, comisión NUMBER(2), cargo VARCHAR2(20) NOT NULL, depto NUMBER(6) NOT NULL REFERENCES departamento ); CREACIÓN DE UNA TABLA EN S.Q.L.

5 John Freddy Duitama M.U.de.A. Facultad de Ingeniería. CREATE TABLE departamento ( código NUMBER(6), nombreVARCHAR2(6) NOT NULL UNIQUE, ciudad VARCHAR2(12) CHECK (ciudad IN (‘Medellín’,’Bogotá’,’Cali’), PRIMARY KEY(código) ); CREATE TABLE empleado ( cédulaNUMBER(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(cédula)); CREACIÓN DE UNA TABLA EN S.Q.L.

6 John Freddy Duitama M.U.de.A. Facultad de Ingeniería. Involucra expresiones como las que aparecen en el WHERE. Si involucra otros atributos u otra relación debe ser mediante sub- consultas. Sintaxis : CHECK ( condición) Se valida si el atributo cambia. (Insert o Update). CREATE TABLE empleado ( cédulaNUMBER(10) PRIMARY KEY, nombre VARCHAR2(30) NOT NULL, jefe NUMBER(10) REFERENCES empleado(cédula), salario NUMBER(10,2) NOT NULL CHECK ( salario > 0 ), sexo CHAR(1) CHECK ( sexo IN (‘F’,’M’)), comisión NUMBER(3)CHECK ( comision between 0 and 100 ), cargo VARCHAR2(20) NOT NULL, depto NUMBER(6) NOT NULLREFERENCES departamento ); Las reglas CHECK para atributos:

7 John Freddy Duitama M.U.de.A. Facultad de Ingeniería. CREATE TABLE empleado ( cédula NUMBER(10) PRIMARY KEY, nombre VARCHAR2(30) NOT NULL, depto NUMBER(6) NOT NULLREFERENCES departamento); Traducción del modelo E/R Departamento #código nombre Empleado #cédula Nombre

8 John Freddy Duitama M.U.de.A. Facultad de Ingeniería. CREATE TABLE grupo ( cursoVARCHAR2(3) REFERENCES curso, numero NUMBER(2), cupo NUMBER(6), PRIMARY KEY(curso, numero) Traducción del modelo E/R Curso #código Nombre créditos Grupo #numero cupo

9 John Freddy Duitama M.U.de.A. Facultad de Ingeniería. CREATE TABLE Inventario ( bodegaVARCHAR2(3) REFERENCES bodega, producto VARCHAR2(3)REFERENCES producto, cantidad NUMBER(6) NOT NULL, PRIMARY KEY(bodega, producto) ) Traducción del modelo E/R Producto #codigo nombre Bodega #código Nombre Inventario cantidad

10 John Freddy Duitama M.U.de.A. Facultad de Ingeniería. Reglas de la forma : evento-condición -acción. 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 réplicas de información en ambientes distribuidos Para cálculo de valores derivados. Problemas: Se hace complejo su seguimiento. Pueden generar ciclos infinitos. Disparadores.

11 John Freddy Duitama M.U.de.A. Facultad de Ingeniería. De fila: Se ejecuta una vez por cada fila modificada por la instrucción 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 declaración: Se activa una vez por cada instrucción SQL sin importar las tuplas que modifique. Tipos de disparadores.

12 John Freddy Duitama M.U.de.A. Facultad de Ingeniería. Eventos : INSERT - UPDATE - DELETE. Puede activarse: BEFORE - AFTER - INSTEAD OF de la instrucción S.Q.L. Usos: BEFORE: para validaciones, controles. AFTER: auditoria. INSTEAD OF: Operaciones sobre vistas. Condición: Después de presentado el evento la condición determina cuando o no se ejecuta la acción del disparador. (usada solo para disparadores de fila) Acción : Programa que se ejecuta al ocurrir el evento y ser cierta la condición. Partes de un Disparador.

13 John Freddy Duitama M.U.de.A. Facultad de Ingeniería. 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_salarioNUMBER(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 más que su jefe’); END IF; END; Ejemplo disparador. Evento Condición Acción

14 John Freddy Duitama M.U.de.A. Facultad de Ingeniería. Bibiografía. 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 edición. 200.


Descargar ppt "John Freddy Duitama M.U.de.A. Facultad de Ingeniería. Creación del esquema de Una Base de Datos. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A."

Presentaciones similares


Anuncios Google