Vous êtes sur la page 1sur 24

AP6-AA2-Ev2-Construcción de elementos de programación para el proyecto de formación

Luis Alexander Rodríguez Gámez


Juan Camilo Guarin
Jesus Leonardo Rueda

Servicio Nacional de Aprendizaje Sena


Centro de Servicio Financieros
Análisis y Desarrollo de Sistemas de Información
Ficha 1565035
Bogotá Colombia
2019*Camilo Andrés Gutiérrez
Tabla de contenido
Descripción de la Actividad...........................................................................................................1
1.Procedimientos Almacenados ............................................................................................2
2.Funciones ...........................................................................................................................15
3 .Desencadenadores o Triggers ...........................................................................................19
1.Procedimientos Almacenados

Una vez realizados los ejercicios de práctica expuestos en el laboratorio y validados por el tutor
técnico, se debe concertar un encuentro sincrónico con el tutor técnico y el equipo de proyecto
para determinar los elementos de programación a construir para el sistema de información, estos
deben elaborar se en el SGBD seleccionado.

Estos elementos deben cumplir con las siguientes especificaciones:

 Para cada elemento se debe identificar a que requerimiento funcional o caso de uso apoyan. 
Deben construirse mínimo 10 procedimientos almacenados.

 Deben construirse mínimo 5 funciones.

 Deben construirse mínimo 5 desencadenadores.

Los anteriores elementos deben ser presentados en un documento donde se especifiquen los
ítems determinados anteriormente, el objetivo de cada uno de los elementos propuestos, los
códigos correspondientes a los elementos programados y los resultados de la ejecución sobre la
base de datos del proyecto.
1.1Veremos un procedimiento que permita identificar los administradores principales es
decir del Departamento de Tecnología es mismo se efectuara para cumplir con el caso de
uso:

Administrar
usuarios

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `muestra_admin`()
SELECT*FROM administrador WHERE dependencia = "Tecnología"$$
DELIMITER;

1. A continuacion veremos un procediemiento que permita ingresar de manera rapida un nuevo


cliente lo cual nos permite procesar el caso de uso:.

INGRESAR DATOS
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `ingresar_cliente`(identificacion
int(10),nombre varchar(30), apellido varchar(30),direccion varchar(100),fecha_nacimiento
date,telefono int(10),edad int(3),Correo varchar(30),usuario varchar (15), clave varchar(10))
INSERT INTO
cliente(id_cli,nom_cli,ape_cli,dir_cli,fecha_nac,Telefono,Edad,Correo,usuario,clave) VALUES
(identificacion,nombre,apellido,direccion,fecha_nacimiento,telefono,edad,Correo,usuario,clave)
$$
DELIMITER ;

CALL ingresar_cliente(22201,"Jesus","Gualteros","Av cali 57 08 sur","1988-08-


03",7016785,28,"jesus1988@hotmail.com","gual2018","1988");

2. Este procedimiento llamado contar_clientes no permitira saber de cuantos clientes tenemos en


tiempo real activos e inactivos buscamos tener el control del impacto de la empresa en cuanto a
clientes dicho proceso esta incluido en el caso de uso

Administrar
usuarios
DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `contar_clientes`()

SELECT COUNT(id_cli) from cliente WHERE Estado = "Activo"$$

DELIMITER ;

3. El siguiente procedimiento nos permitirá tener un estimado de ventas por todos los
paquetes vendidos lo cual será utilizado en el caso de uso:

ADIMINISTRAR
DATOS

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `valor_recibido`()

SELECT SUM(valor_paquete) FROM paquete$$

DELIMITER ;

4. Este procedimiento permite al usuario validar los nombres de los paquetes y asi escoger
un paquete, este pertenece a una parte del caso de uso:

CONSULTAR
PAQUETE

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `consultar_paq`()

SELECT nom_paquete FROM paquete$$

DELIMITER ;
5. Este procedimiento permite al administrador ver los nombres de los usuarios del sistema
este se usa en caso de uso

Administrar

usuarios

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `ver_usuarios`()

SELECT usuario FROM administrador$$

DELIMITER ;
7. En este procedimiento veremos la opción para que el cliente pueda visualizar el paquete
completo mas detallado utilizado para desarrollar el caso de uso:

Visualizar
paquete

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `mostrar_paqcompleto`()

SELECT
id_paquete,nom_paquete,id_guia_paquete,id_cond_paquete,valor_paquete,nom_guia,nom_cond,
ape_cond,placa

FROM conductor,guia,paquete

WHERE id_cond LIKE id_cond_paquete and id_guia like id_guia_paquete$$

DELIMITER ;
8. El procedimiento que sigue nos permite mostrar el valor a deber de un cliente según tu paquete

Indicado en el caso de uso:

Mostrar
informes

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `valor_cliente`()

SELECT id_cli,id_paq_cli,nom_paquete,valor_paquete,Estado from cliente,paquete

WHERE id_paquete like id_paq_cli and id_cli = 22201$$

DELIMITER ;
9 El siguiente procedimiento nos permite borrar un cliente cuyo estado por diferentes razones
esta inactivo caso de uso

Administrar
usuarios

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `eliminar_cliente`(noactivo


varchar(10))

DELETE FROM cliente where Estado = noactivo$$

DELIMITER ;
10. Para este procedimiento deseamos actualizar el valor del paquete Guatape ya que es el mas
utlizados por los clientes y tras su demanda el precio varia mucho caso de uso

Actualizar
datos

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `actualizar_valor`(IN `valor_nuevo`


INT(7))

UPDATE paquete set valor_paquete = valor_nuevo

WHERE nom_paquete ="Guatape"$$

DELIMITER ;

SET @p0='125000'; CALL `actualizar_valor`(@p0);


11. Este procesa trata de actualizar los conductores por medio de su cambio de placa por soat
desactualizado caso de uso

Actualizar
datos

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `actualizar_conductor`(IN


`Nuevo_estado_soat` VARCHAR(20), IN `nueva_placa` VARCHAR(6))

update conductor set estado_soat= Nuevo_estado_soat,placa=nueva_placa

WHERE estado_soat = "desactualizado"$$

DELIMITER ;
Evidenciamos la eiliminacion de datos con atributo “Inactivo”

2.Funciones:

En este ejercicio veremos varias funciones que podemos utilizar en nuestra base de datos.

2.1 Crearemos una función que permita contar los caracteres de una contraseña de
usuario para la tabla clientes con eso podemos sugerir a la as corta incrementarla para
mayor seguridad. Caso de uso

Administrar
usuario

SELECT nom_cli,usuario, character_length(usuario) as caracter FROM cliente ORDER BY caracter DE


SC
2.2 Contar usuarios de cada una de las tablas. En este caso guía. Caso de uso

SELECT COUNT(*) as conteo from guia Mostrar


informes

2.3 Mostrar los todos paquetes concatenados en una sola columna, caso de uso:

Mostrar
informes

SELECT GROUP_CONCAT(nom_paquete) as todos_lospaquetes FROM paquete


2.4 Esta función no permite adquirir la edad promedio de los clientes para saber el rango de
publico al cual estamos llegado para futuras promociones. Caso de uso

Mostrar
informes

SELECT AVG (Edad) from cliente

2.5 En esta función verificaremos el mes del fecha de nacimiento de los clientes para coordinar
los con promociones con cumpleaños: Casos de uso:
Mostrar
informes
SELECT monthname(fecha_nac) FROM cliente WHERE id_cli = "22201"

2.6 En esta función permitiremos que una fecha determinada cambie de formato para largar su
información, caso de uso

Mostrar
informes

SELECT DATE_FORMAT (NOW(), "%W, %D OF %M, %Y")


3. Desencadenadore O Triggers.

3.1 En este ocasión realizaremos un Trigger que permita guardar los datos que por alguna razón
serán eliminados algo asi como un backup.Este proceso reforzara los casos de uso:

ADMINISTRACION ACTUALIZAR
DE USUARIOS DATOS

CREATE TABLE paquetes_actualizados (anterior_id_paquete int(6),anterior_nom_paquete


varchar (30),anterior_id_guia_paquete int(11),anterior_id_cond_paquete int(11),
anterior_valor_paquete int(7),nuevo_id_paquete int(6),nuevo_nom_paquete
varchar(30),nuevo_id_guia_paquete int(11),nuevo_id_cond_paquete int(11),usuario
varchar(15),fecha_modif date)

CREATE TRIGGER `actualiza_paquete_bu` BEFORE UPDATE ON `paquete`

FOR EACH ROW INSERT INTO actualiza_paquete_bu


(anterior_id_paquete,anterior_nom_paquete,anterior_id_guia_paquete,anterior_id_cond_paquete,
anterior_valor_paquete,nuevo_id_paquete,nuevo_nom_paquete,nuevo_id_guia_paquete,nuevo_i
d_cond_paquete,usuario,fecha_modif)

VALUES

(old.id_paquete,old.nom_paquete,old.id_guia_paquete,old.id_cond_paquete,old.valor_paquete,
new.id_paquete,new.nom_paquete,new.id_guia_paquete,new.id_cond_paquete,new.valor_paque
te,

CURRENT_USER(),NOW())

UPDATE paquete SET valor_paquete = valor_paquete + 20000 WHERE id_paquete = 33301

Evidenciamos la tabla de respaldo por la modificación de tabla donde veremos el usuario


responsable.

3.2 En es trigger nos dedicaremos a guardar un copia de un registro eliminado. Caso de uso.

Administrar Crear
usuario informe
Crearemos una tabla para guardar los datos eliminados.

create TABLE conductor_eliminado (id_cond_eli int(10),nom_cond_eli varchar(30),ape_cond_e


li varchar (30),num_lic_eli int(15),estado_soat_eli varchar (20), placa_elivarchar (6),u
suario_eli varchar (15) ,clave_eli varchar (10))

Creamos un trigger que envie esa tabla eliminada a la creada.

CREATE TRIGGER eli_conduc AFTER DELETE ON conductor FOR EACH ROW insert INTO conductor_e
liminado (id_cond_eli,nom_cond_eli,ape_cond_eli,num_lic_eli,estado_soat_eli,placa_eli,usuario_eli
,clave_eli) VALUES(old.id_cond,old.nom_cond,old.ape_cond,old.num_lic,old.estado_soat,old.placa,
old.usuario,old.clave)

Eliminamos un registro de la tabla conductor e inmediato se guarda un backup en la tabla


conductor eliminado con los usuarios antiguos.
3.3 A continuación con trigger anterior le modificaremos su estructura para poder tener un dato
de que usuario administrador lo elimino y en que fecha. Caso de uso:

Administrar
usuario

Debemos modificar ingresando dos columnas a la tabla que almacena los registro eliminados los
datos usuario y fecha .

ALTER table conductor_eliminado add COLUMN (usuario_admin varchar (15), fecha_elim date)

Le indicamos al trigger que ingrese las dos columnas en su sintaxis.

DROP TRIGGER IF EXISTS `eli_conduc`;CREATE DEFINER=`root`@`localhost` TRIGGER `eli_conduc`


AFTER DELETE ON
`conductor` FOR EACH ROW insert INTO conductor_eliminado (id_cond_eli,nom_cond_eli,ape_cond_eli
,num_lic_eli,estado_soat_eli,placa_eli,usuario_eli,clave_eli,usuario_admin,fecha_elim ) VALUES(
old.id_cond,old.nom_cond,old.ape_cond,old.num_lic,old.estado_soat,old.placa,old.usuario,old.clave
,CURRENT_USER(), NOW())

Ahora eliminaremos un registro de conductor y evidenciaremos en la tabla backup las dos nuevas
columnas y se guardara en la misma tabla backup.
3.4 En este trigger nos permite saber en que momento fue ingresada un tabla guardar un backup
que diferencia del anterior nos guardara no al eliminar si no a ingresar un tabla. Caso de uso.

Administrar

datos

Creamos la tabla copia:

CREATE TABLE registro_admin (id_admin int(12),nom_admin varchar (20),dependencia varcha


r(20),insertado datetime)

Se crea el trigger con la solicitud.

CREATE TRIGGER administrador_ai AFTER INSERT INSERT INTO r


ON administrador for EACH ROW
egistro_admin (id_admin,nom_admin,dependencia,insertado) VALUES(new.id_admin,new.nom_admin,new_
dependencia,now() )

Ingresamos un nuevo registro en la tabla administrador

INSERT INTO administrador (id_admin,nom_admin,ape_admin,dependencia,usuario,clave) VALUES (1


070584565,"Yennifer","Olaya","Archivo","yenol",1070656)
Y validamos su tabla de respaldo.

3.5 En este trigger vamos a guardar copia de algunos registros de los dtos que ingresemos en la
tabla clienconductor caso de uso.

Administrar
datos

Creamos la tabla backup:

CREATE TABLE clienconductorback(id_cli_cliconductor_back int(10),nom_cond_cliconductor_back


varchar(30))
Creamos le trigger :
CREATE TRIGGER clienconductor_ai AFTER INSERT ON clienconductor FOR EACH ROW
INSERT INTO clienconductorback(id_cli_cliconductor_back,nom_cond_cliconductor
_back) VALUES( id_cli_cliconductor_back,nom_cond_cliconductor_back)
[
Ingresamos los nuevos datos.

INSERT INTO clienconductor (id_cli_cliconductor,nom_cond_cliconductor) VALUES(45845784,"Luis


")

Y confirmamos los datos en la tabla backup.

Vous aimerez peut-être aussi