Creación del esquema de Una Base
de Datos.
John Freddy Duitama Muñoz.
Facultad de Ingeniería.
U.de.A.
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.
John Freddy Duitama M.
U.de.A. Facultad de Ingeniería.
Restricciones de Integridad en una B. de D. Relacional.
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.
John Freddy Duitama M.
U.de.A. Facultad de Ingeniería.
CREACIÓN DE UNA TABLA EN S.Q.L.
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)
nombre
VARCHAR2(30)
jefe
NUMBER(10)
salario
NUMBER(10,2)
comisión
NUMBER(2) ,
cargo
VARCHAR2(20)
depto
NUMBER(6)
PRIMARY KEY,
NOT NULL,
REFERENCES empleado,
NOT NULL,
NOT NULL,
NOT NULL
REFERENCES departamento
);
John Freddy Duitama M.
U.de.A. Facultad de Ingeniería.
CREACIÓN DE UNA TABLA EN S.Q.L.
CREATE TABLE departamento
( código
NUMBER(6),
nombre
VARCHAR2(6)
NOT NULL
UNIQUE,
ciudad
VARCHAR2(12)
CHECK (ciudad IN (‘Medellín’,’Bogotá’,’Cali’) ,
PRIMARY KEY(código)
);
CREATE TABLE empleado
( cédula
NUMBER(10)
nombre
VARCHAR2(30)
jefe
NUMBER(10) ,
salario
NUMBER(10,2)
cargo
VARCHAR2(20)
depto
NUMBER(6)
PRIMARY KEY,
NOT NULL,
NOT NULL,
NOT NULL,
REFERENCES departamento
ON UPDATE SET NULL
ON DELETE CASCADE,
FOREIGN KEY jefe REFERENCES empleado(cédula));
John Freddy Duitama M.
U.de.A. Facultad de Ingeniería.
Las reglas CHECK para atributos:
• Involucra expresiones como las que aparecen en el WHERE.
• Si involucra otros atributos u otra relación debe ser mediante subconsultas.
• Sintaxis : CHECK ( condición)
• Se valida si el atributo cambia. (Insert o Update).
CREATE TABLE empleado
( cédula
NUMBER(10)
nombre
VARCHAR2(30)
jefe
NUMBER(10)
salario
NUMBER(10,2)
sexo
comisión
cargo
depto
);
John Freddy Duitama M.
CHAR(1)
NUMBER(3)
VARCHAR2(20)
NUMBER(6)
PRIMARY KEY,
NOT NULL,
REFERENCES empleado(cédula),
NOT NULL
CHECK ( salario > 0 ) ,
CHECK ( sexo IN (‘F’,’M’)),
CHECK ( comision between 0 and 100 ) ,
NOT NULL,
NOT NULL
REFERENCES departamento
U.de.A. Facultad de Ingeniería.
Traducción del modelo E/R
Empleado
#cédula
Nombre
Departamento
#código
nombre
CREATE TABLE empleado
( cédula NUMBER(10)
PRIMARY KEY,
nombre VARCHAR2(30) NOT NULL,
depto
NUMBER(6)
NOT NULL REFERENCES departamento);
John Freddy Duitama M.
U.de.A. Facultad de Ingeniería.
Traducción del modelo E/R
Grupo
#numero
cupo
CREATE TABLE grupo
( curso
VARCHAR2(3)
numero
NUMBER(2),
cupo
NUMBER(6) ,
PRIMARY KEY(curso, numero)
John Freddy Duitama M.
Curso
#código
Nombre
créditos
REFERENCES curso,
U.de.A. Facultad de Ingeniería.
Traducción del modelo E/R
Producto
#codigo
nombre
Inventario
cantidad
CREATE TABLE Inventario
( bodega
VARCHAR2(3)
producto
VARCHAR2(3)
cantidad
NUMBER(6)
PRIMARY KEY(bodega, producto)
)
John Freddy Duitama M.
Bodega
#código
Nombre
REFERENCES bodega,
REFERENCES producto,
NOT NULL,
U.de.A. Facultad de Ingeniería.
Disparadores.
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.
John Freddy Duitama M.
U.de.A. Facultad de Ingeniería.
Tipos de disparadores.
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.
John Freddy Duitama M.
U.de.A. Facultad de Ingeniería.
Partes de un Disparador.
• Eventos : INSERT - UPDATE - DELETE.
Puede activarse: BEFORE
- AFTER -
instrucción S.Q.L.
INSTEAD OF de la
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.
John Freddy Duitama M.
U.de.A. Facultad de Ingeniería.
Ejemplo disparador.
CREATE OR REPLACE TRIGGER verifica_salario
BEFORE INSERT OR UPDATE(salario , jefe) ON empleados
FOR EACH ROW
WHEN ( :new.jefe is not null )
Condición
DECLARE
v_salario
NUMBER(8);
BEGIN
Select salario
INTO v_salario
FROM empleados
WHERE cedula = :new.jefe;
IF :new.salario > v_salario THEN
Evento
Acción
RAISE_APPLICATION_ERROR(-20400,’El empleado no puede ganar más que su jefe’);
END IF;
END;
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.
John Freddy Duitama M.
U.de.A. Facultad de Ingeniería.
Descargar

Descargar