Académique Documents
Professionnel Documents
Culture Documents
ALUMNO _________________________________________________
TEMA TRIGGERS
OBJETIVOS
Triggers en PostgreSQL
Tipos de Triggers
Estructura de los triggers
REQUERIMIENTOS
PROCEDIMIENTO
I. TRIGGERS
DESCRIPCIN DE LA BASE DE DATOS EJEMPLO
OBJETIVOS
Implementar una base de datos que permita llevar un registro de matrculas y notas
acerca de los cursos que se dictan en una institucin particular
DESCRIPCIN
Se nos ha encargado disear una base de datos para una institucin educativa
particular que se dedica a la capacitacin exclusiva de personas que trabajan en las
distintas empresas de nuestra regin, los trabajadores tienen la libertad de elegir los
cursos que ellos prefieran ya que al finalizar un curso ellos podran tener un certificado
emitido por la institucin educativa y avalado por el Ministerio de Trabajo el cual tendr
un valor especial para el currculum de cada trabajador y as mismo las empresas
podrn garantizar el nivel de conocimientos y competencias de sus trabajadores.
REQUERIMIENTOS
Se debe tener un registro de todas las empresas cuyo personal podr ser
capacitado
Se debe llevar un registro de los trabajadores-alumnos, especificando la empresa a
la cual pertenecen
Se debe tener un registro de los diversos cursos que sean programados por la
institucin educativa
Se debe tener un registro del personal encargado de realizar el registro de las
matrculas de los trabajadores en los diversos cursos programados
nicamente tendrn validez para los trabajadores aquellos cursos que sean
aprobados
La modalidad de evaluacin de cada curso implicar el registro de tres notas y el
promedio final ser igual al promedio de dichas tres notas
En caso de haber desaprobado un curso un trabajador podr solicitar una
constancia de asistencia siempre y cuando haya cumplido con un 75% de
asistencias al curso
MODELO FSICO DE LA BASE DE DATOS PROPUESTA
TMATRICULAS
II. IMPLEMENTAR LA BASE DE DATOS PROPUESTA
1. Desde la herramienta pgAdmin III crearemos la base de datos de nombre
DBCAPACITA. Anote el procedimiento seguido
7. La tabla TPERSONAL requiere que se almacene la clave de cada persona, para ello
ser necesario implementar dos funciones, una funcin que permita encriptar la
contrasea y otra que desencripte una contrasea encriptada previamente.
Emplearemos un algoritmo simple, el cual consistir en invertir primero la cadena
original y luego que sume el valor 1 al cdigo ASCII de cada carcter de la contrasea
para encriptarla, aplicaremos el proceso inverso para desencriptarla
CREATE OR REPLACE FUNCTION f_encriptar(varchar) RETURNS varchar AS
'declare
p_clave alias for $1;
x_cont int4 := 1;
x_clave varchar(15) := '';
x_letra varchar(1);
begin
while x_cont <= length( p_clave ) loop
x_letra:= substring(p_clave,x_cont,1);
x_clave:= chr( ascii(x_letra) + 1 ) || x_clave;
x_cont := x_cont + 1;
end loop;
return x_clave;
end;
' LANGUAGE 'plpgsql';
CREATE OR REPLACE FUNCTION f_desencriptar(varchar) RETURNS varchar AS '
declare
p_clave alias for $1;
x_clave varchar(15) := '';
x_cont int4 := 1;
x_letra varchar(1);
begin
while x_cont <= length(p_clave ) loop
x_letra:= substring(p_clave, x_cont, 1);
x_clave:= chr( ascii( x_letra ) - 1 ) || x_clave;
x_cont := x_cont + 1;
end loop;
return x_clave;
end;
' LANGUAGE 'plpgsql';
8. Implemente algunas sentencias SQL que permitan verificar la correcta operacin de
las funciones anteriores
Primera etapa:
Segunda etapa:
13. REQUERIMIENTO: A cada alumno nuevo se le debe asignar un cdigo numrico
nico.
SOLUCIN: Crearemos un trigger a la tabla TALUMNOS de tal forma que al insertar
un registro en la tabla obtendremos el valor del nuevo cdigo de la secuencia
seq_cod_alu y lo insertaremos en dicho registro. A continuacin se muestra el cdigo
resultante
14. A continuacin mostramos el cdigo que permite asociar el trigger a la tabla talumnos:
(Segunda etapa)
15. REQUERIMIENTO: A cada curso nuevo se le debe asignar un cdigo numrico nico.
SOLUCIN: Crearemos un trigger a la tabla TCURSOS de tal forma que al insertar
un registro en la tabla obtendremos el valor del nuevo cdigo de la secuencia
seq_cod_cur y lo insertaremos en dicho registro. Anote a continuacin el cdigo
resultante:
16. Anote a continuacin el cdigo que permite asociar el trigger a la tabla tcursos:
(Segunda etapa)
17. A continuacin proceda a insertar registros a las tablas TCURSOS, TEMPRESAS y
TALUMNOS, verifique luego el efecto de la accin de los triggers creados. Anote los
detalles que considere ms importantes
18. Para que sirve la estructura o registro NEW empleada en los ejemplos anteriores?
Explique
23. REQUERIMIENTO: Cada curso nuevo que se registre debe empezar con el campo
nmero de inscritos en 0.
SOLUCIN: Modificaremos la funcin asociada al trigger para el evento INSERT de
la tabla TCURSOS de tal forma que se inicialice el campo NRO_INS en cero en dicha
tabla para el nuevo registro agregado.
DATO VALOR
TABLA TCURSOS
EVENTO INSERT
TIEMPO ANTES (BEFORE)
NIVEL FILA
24. Adicione algunos cursos a la tabla TCURSOS y verifique la ejecucin del trigger
modificado. Anote a continuacin todos los detalles que considere importantes
27. REQUERIMIENTO: Cada vez que se modifique el valor de uno de los campos N1, N2
o N3 de cualquier registro de la tabla TMATRICULAS se debe calcular el valor de la
nota promedio para dicho registro
SOLUCIN: Crearemos un trigger a la tabla TMATRICULAS de tal forma que al
modificar uno de los campos N1,N2 o N3 de un registro en la tabla realizaremos
nuevamente el clculo del promedio:
DATO VALOR
TABLA TMATRICULAS
EVENTO UPDATE
TIEMPO ANTES (BEFORE)
NIVEL FILA
28. Modifique algunas notas de algunos registros en la tabla TMATRICULAS y verifique la
ejecucin del trigger creado.
29. REQUERIMIENTO: Se debe llevar un control de la cantidad de alumnos matriculados
por curso para evitar sobrepasar el nmero de vacantes.
SOLUCIN: Crearemos un trigger a la tabla TMATRICULAS de tal forma que al
insertar una nueva matrcula se verifique si existe vacantes en el curso referenciado
sino se debe cancelar el registro, si procede la matrcula debemos sumar UNO al
campo NRO_INS de la tabla TCURSOS para el curso requerido:
DATO VALOR
TABLA TMATRICULAS
EVENTO INSERT
TIEMPO ANTES (BEFORE)
NIVEL FILA
30. Adicione algunos registros a la tabla TMATRICULAS y verifique la ejecucin de los
dos triggers creados a la fecha para el evento insert. Anote a continuacin todos los
detalles que considere importantes
DATO VALOR
TABLA TMATRICULAS
EVENTO UPDATE
TIEMPO ANTES (BEFORE)
NIVEL FILA
32. Modifique algunos registros de la tabla TMATRICULAS y verifique la ejecucin de los
dos triggers creados a la fecha para el evento update. Realice modificaciones de
cdigos de cursos a matrculas especficas y luego verifique el contenido de las tablas
TCURSOS y TMATRICULAS. Anote a continuacin todos los detalles que considere
importantes
DATO VALOR
TABLA TMATRICULAS
EVENTO INSERT
TIEMPO ANTES (BEFORE)
NIVEL FILA
Se ha decidido realizar un campeonato interno de tenis de mesa entre todos los integrantes del
Programa Integral de Desarrollo de Aplicaciones Web (es decir, participan nicamente los alumnos
de nuestro saln). Para ello se requiere implementar una pequea base de datos que permita
registrar la informacin de dicho evento, a continuacin se detallan los requerimientos para la
base de datos:
REQUERIMIENTOS
Llevar un registro de los participantes del saln
Registrar los diferentes encuentros de tenis teniendo en cuenta que en cada partido
deben participar tres personas. Dos contrincantes y un juez
Los contrincantes y el juez de cada partido estarn conformados exclusivamente por
alumnos del saln
En cada partido debe haber un ganador
No se debe permitir registrar como Juez y Jugador a una misma persona al mismo
tiempo
MODELO FISICO DE LA BASE DE DATOS
TALUMNOS TPARTIDOS
OBSERVACIONES Y CONCLUSIONES