lunes, 8 de octubre de 2018

Bitacora PROGRA 2 Bases

Juan Diego Bejarano Pino
Carnet 2017079378
Curso Bases de Datos I
Prof. Franco Quiros

La segunda tarea programada de Bases de Datos I es la implementación de la tarea programada uno, más 2 requerimientos más, entre estos está la creación de un script de simulación, el cual analiza archivos xml y realiza una simulación por días.

En la programación 1, el script de simulación era de indole iterativo, pero para este caso, se tiene que crear una implementación, la cual usa actualizaciones masivas.

Viernes 5 de Octubre 11:58:00 am - 4:30:00 pm

Se creó la base para el script, se definieron los tipos de movimientos y tablas temporales que se utilizarán en el script, las tablas temporales se llenan con los datos base desde el archivo xml





Aqui se vieron varios inconvenientes, ya que se optimizó la carga de los datos xml a las tablas temporales, ya que se paso de manera iterativa, a una carga masiva.

Sabado 6 de Octubre 9:00:00 am - 6:30:00 pm

Este día se creo la base para el loop principalm de simulación, este es el unico momento en el cual se usa iteración, solo sirve para simular el avance de los días, la simulación termina cuando el día en el que se está es mayor que el día final de la simulación.


Una vez creado esto, se empezó a realizar la simulación en sí, se crean los clientes y se añaden a la tabla dbo.Clientes, lo mismo sucede con las cuentas, las cuales se añaden a dbo.Cuentas.

Una vez realizado esto, se creo los estados de cuenta iniciales de todas las cuentas creadas en ese día, esto trajo problemas, ya que como originalmente esto era iterativo, fue confuso pasarlo a actualizaciones masivas, el while utilizado para esto originalmente se redujo a un snippet de codigo bastante resumido, algo que se resume en esto:
En un principio el While original que creaba los estados de cuenta servían para todos los estados de cuenta futuros que se hacen cada mes, pero con esta implementación no funcionaba así, después de mucho tiempo intentando arreglar este problema, finalmente se tomó una pasusa para terminar esto el día siguiente.

Domingo 7 de Octubre 11:00:00 am - 7:15:00 pm

Aqui se concluyo el script de simulación necesario para la programación, el segundo requerimiento, el cual ees mostrar el saldo final en el Estado de Cuenta cada mes ya se implemento desde la programación pasada, por lo que no fue problema para esta implementación.

Para poder solucionar el problema de los Estados de Cuenta de los meses siguientes se modifico la tabla dbo.EstadoDeCuentas, se le agrego una columna para saber si el estadod e cuenta es el activo, o si ya esta cerrado, asi podemos modificar solo el activo sin alterar los anteiores.

La tabla en cuestión quedó diseñada de esta manera, aqui ya está cargado con los datos despues de la simulación:


Los movimientos es lo siguiente que se procesa, se mete todos los movimientos del día en una tabla temporal, llamada @tempMovsDelDia, para luego procesarlos y hacer update a todas las tablas necesarias, las cuales incluyen a las cuentas, y Estados de Cuentas activos







Una vez heho esto, se verifica si el estado de cuenta tiene que ser cerrado, y hay que generar uno nuevo, esto pasa cada mes y se adjunta todos los mivimientos a la tabla dbo.Movimientos para poder consultarlos desde la aplicación Web. Finalmente se avanza el día.
Este día no se encontró grandes trabas, ya que al resolver el tema de los Estados de Cuentas, el resto avanzó de manera rápida y sin problemas.

El Codigo de inserción de movimientos y de creación nuevos estados de cuentas activos se ve de la siguiente manera:


Así terminando este requerimiento, el cual pasó de ser Iterativo a de Actualización Masiva.