Subido por Joaquin Marino Ramirez Reyes

Practica 2 bdd CORREGIDA

Anuncio
Licenciatura en Sistemas de Información Administrativa.
Programación de Servidores de Base de Datos
•
•
•
Alumnos:
García Cervantes Mario Alejandro (315046)
Guevara Rodríguez Fernando Alejandro (283803)
Ramírez Reyes Joaquín Marino (540196)
10/10/2024
Introducción:
A lo largo de las clases posteriores a la primera unidad, se abordaron temas relacionados
con la creación de funciones y procedimientos almacenados. En esta segunda unidad, se
llevó a cabo una revisión exhaustiva sobre triggers y transacciones. Por lo tanto, en el
presente documento se presentará un caso práctico en el que se aplicarán los
conocimientos adquiridos, evidenciando así la relevancia de estos temas. A continuación,
se describe el caso que servirá de base para el desarrollo del trabajo:
La administración de rentas de películas Sakila ha decidido premiar a los clientes
más frecuentes con un cupón de Rentas_Gratis acorde al número de rentas
entregadas según los siguientes parámetros.
● Ladiferencia de días entre la fecha de renta y retorno no deben de exceder
más de 7 días. (Usar select)
● Uncupón en Rentas_Gratis es el equivalente a tres devoluciones por parte
del cliente. (función simple con consumo de datos).
● Una vez tomados en cuenta la validación de las tres rentas, estas ya no
deben ser tomadas en cuenta. Si la renta ya no es válida favor de
mencionar en una tabla de log cual renta con fecha de consulta. (usar
trigger)
● Proporcionar como resultado la salida de los clientes que fueron acreedores
a los cupones especificando el total de cupones disponibles.
Favor de utilizar las herramientas vistas en clase, procedimientos almacenados,
funciones, triggers y transacciones.
Desarrollo:
1. Se ejecutó una consulta SQL que selecciona todos los registros de la tabla rental. La
consulta tiene como objetivo obtener las rentas cuya diferencia entre la fecha de
devolución (return_date) y la fecha de renta (rental_date) sea de 7 días o menos. Los
registros mostrados corresponden a rentas donde la devolución ocurrió dentro de los 7
días posteriores a la fecha de alquiler.
2. Se realizó una modificación estructural en la base de datos para permitir el seguimiento
del estado de los cupones asociados a cada renta en la tabla “rental”. Esta modificación
consistió en agregar una nueva columna llamada “estado_cupon” y luego actualizar su
valor en todos los registros existentes. Este paso es fundamental para continuar con el
proceso de asignación de cupones a los clientes, ya que ahora la base de datos tiene
la capacidad de almacenar el estado de los cupones de manera individual por cada
renta.
3. Implementamos una nueva tabla en la base de datos llamada cupones, que será
utilizada para almacenar información relacionada con los cupones que se asignan a los
clientes. Esta tabla tiene como propósito llevar un registro detallado de cuándo se
generaron y cuándo fueron utilizados los cupones, además de establecer la relación
entre los cupones y los clientes.
4. Se desarrolla el procedimiento almacenado llamado “SacarCupones”, cuyo objetivo es
verificar si un cliente cumple con los criterios para recibir un cupón y, de ser así,
asignarles uno y actualizar el estado de las rentas correspondientes. Este procedimiento
realiza múltiples operaciones de consulta y actualización sobre la tabla de rentas, y es
fundamental para la automatización del proceso de asignación de cupones. Se asegura
de que, al acumular al menos tres devoluciones sin haber recibido cupones
previamente, se le asigne un cupón y se actualicen los registros de las rentas
correspondientes para evitar duplicidades.
5. Establecemos
un
procedimiento
almacenado
denominado
“AplicarCuponesATodosClientes”, diseñado para recorrer la lista de clientes y aplicar
cupones a aquellos que cumplan ciertos criterios. Este procedimiento utiliza un cursor
para iterar sobre cada cliente y llama a otro procedimiento (SacarCupones) para
determinar la elegibilidad de cada uno.
6. Se crea una tabla llamada “log_rentas_no_sirven”, cuyo propósito es almacenar un
registro de las rentas que no califican para generar cupones o no cumplen con los
requisitos establecidos. Esta tabla incluirá tanto la información de la renta como la fecha
en que se realizó la consulta y la fecha y hora en la que se creó el registro.
7. En este paso se implementa un trigger llamado “rentalA”, el cual se ejecuta
automáticamente después de cada actualización en la tabla “rental”. El objetivo de este
trigger es registrar en la tabla “log_rentas_no_sirven” las rentas que cambian su estado
de “estado_cupon” de false a true, asegurando que se lleve un control preciso de las
rentas que no calificaron inicialmente para cupones pero luego cambiaron su estado.
8. Como paso final, se ejecuta una consulta SQL para obtener la cantidad total de cupones
generados por cada cliente en la tabla cupones. Este análisis permite identificar qué
clientes han recibido cupones, asegurando así que se está llevando un control efectivo
de los beneficios otorgados. Dicho paso final cierra el ciclo del proceso de generación y
seguimiento de cupones, asegurando que la base de datos se mantenga organizada y
que la información relevante esté fácilmente accesible para análisis y toma de
decisiones.
Conclusión:
La práctica se centró en el desarrollo de funciones, triggers y transacciones en MySQL,
aplicadas a la base de datos Sakila. Se llevaron a cabo diversas técnicas, incluyendo la
creación de funciones específicas para realizar las acciones requeridas, así como el diseño,
implementación y gestión de triggers y transacciones dentro de la base de datos. Esto
permitió identificar eventos específicos y prevenir errores durante la ejecución de ciertos
comandos.
A través de estas actividades, se fortalecieron los conocimientos sobre las herramientas
mencionadas y se amplió la perspectiva sobre las oportunidades de desarrollo en el área
del backend, así como en la administración, estructuración y mantenimiento de bases de
datos. Este enfoque contribuye al backend al incorporar validaciones y reglas de negocio,
evitando que la carga de procesamiento recaiga completamente en la base de datos.
Descargar