Você está na página 1de 14

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.








CREATE TABLE Inventario
( bodega VARCHAR2(3) REFERENCES bodega,
producto VARCHAR2(3) REFERENCES producto,
cantidad NUMBER(6) NOT NULL,
PRIMARY KEY(bodega, producto)
)

Traduccin del modelo E/R
Producto
#codigo
nombre

Bodega
#cdigo
Nombre

Inventario
cantidad

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.

Você também pode gostar