Avances Hilary
Fecha: Viernes 15 Octubre
Avances:
Por recomendación del profesor de debía mejorar la eficiencia de el codigo para recorrer el xml y extraer los datos. Para esto se revisaron los archivos sql de ejemplo que se habían visto en clase. Por lo tanto, para realizar el mapeo de datos se utilizaron inner joins al insertar en la tabla con un select. Para este punto no se estaba utilizando el xml con los datos nuevos, si no la última versión de los datos para la tarea anterior.
Horas trabajadas: 4
Problemas:
Al principio no se sabía cómo realizar correctamente la selección con un join, se empezó utilizando full outer join, sin embargo esto produjo valores nulos en algunas columnas por lo que se generaba un error. Ya que esto sucedió se buscó información sobre los joins y se vio ejemplos dados por el profesor.
Moralejas:
A pesar de que tantas pruebas e investigaciones toman mucho tiempo, al final vale la pena al ver que todo funciona de manera más eficiente
Referencias:
- Joins: https://www.sqlshack.com/es/introduccion-y-resumen-de-la-clausula-de-sql-join/
- Ejemplo: Ejemplo procesamiento XML.txt
- Codigo: https://github.com/hilaryCC/Bases/blob/e19dfcbe12f008cc0e9509602701e6ab78b215d3/ReadXML.sql
-----------------------------------------------------------------------------------------------------------------------------
Fecha: Sábado 16 Octubre
Avances:
Continuando con lo realizado el día anterior, se empezó a realizar pruebas con el xml de la nueva tarea. Primero se empezó probando extraer datos como Personas, Cuentas y Beneficiarios, ya que el nodo donde se podían encontrar estos catálogos varió un poco. Luego de realizar esto se inicio con la extracción de los movimientos de la simulación escrita en el xml. Para esto se crearon nuevas tablas TipoMovimiento, TipoCambio, Movimiento y CuentaObjetivo. Las cuales fueron cambiando conforme la necesidad.
horas trabajadas: 5
Problemas:
Ya que al principio del query para crear las tablas se incluyeron líneas para eliminarlas si existen antes de volverlas a crear, al crear las nuevas tablas se generaron errores al correr el query. Por lo que hubo necesidad de agregar la condición y el drop para las nuevas tablas, esto requirió de un análisis de las FK para saber cual tabla se debía eliminar primero para evitar errores.
Con las nuevas tablas creadas, primero se probó con ingresar los movimientos directamente a la tabla, para probar que los datos extraídos fueran correctos. Se generó un problema ya que algunos movimientos tenían fecha, otros no y no ingresaba todos los movimientos. Para esto se investigó sobre la lectura xml en sql y se encontró una manera práctica de hacerlo. Utilizando este método, no fue necesario utilizar un while para recorrer todas las fechas, ahorrando así tiempo.
Moralejas:
Siempre hay diferentes maneras de realizar un mismo trabajo, y es mejor buscar la mas eficiente para tener un resultado más eficaz.
Referencias:
- Lectura xml: https://geeks.ms/lfranco/2008/03/12/t-sql-leer-parmetros-xml-y-convertirlos-en-tablas/
- Codigo Tablas: https://github.com/hilaryCC/Bases/blob/e19dfcbe12f008cc0e9509602701e6ab78b215d3/CreateTables.sql
- Codigo Movimientos: https://github.com/hilaryCC/Bases/blob/e19dfcbe12f008cc0e9509602701e6ab78b215d3/ReadXML.sql
Fecha: Domingo 17 Octubre
Avances:
Se terminaron los detalles de la creacion de las tablas, se añadieron columnas que hacian falta y se revisó que los FK estuvieran bien. Se envió el modelo fisico al profesor en caso de que hiciera falta algo.
Horas trabajadas: 1
* Se esperó a que el profesor diera el visto bueno para continuar con la tarea
-----------------------------------------------------------------------------------------------------------------------------
Fecha: Lunes 18 Octubre
Avances:
Se agregaron las columnas que el profesor comunicó que hacían falta. Se inició con la investigación sobre triggers y SP para movimientos y estados de cuenta. Se cambió la forma de extraer los movimientos, se ingresaron a una tabla temporal y luego se recorría esta tabla con un while para poder ejecutar el SP con los datos de cada movimiento
Horas trabajadas: 5
Problemas:
Se realizó un SP sencillo que solo realizaba un print en la consola para probar el funcionamiento con los movimientos, sin embargo al intentar ejecutar el SP con los parámetros de la tabla, no se lograba. Luego de varios intentos y diferentes formas, se concluyó que era mejor declarar variables para guardar los datos de la tabla temporal y luego ejecutar el SP con estas variables.
Conforme se avanzaba con las pruebas, más inconsistencias se encontraban. Se analizó el xml, el codigo de extracción y el SP, luego de un tiempo se notó que no se había actualizado el archivo.
Moralejas:
Es importante revisar que se estén utilizando datos actualizados para evitar retrasos innecesarios
Referencias:
- Ejemplos de SP: Ejemplo Stored Procedure.sql , Ejemplo solucion pregunta SP.txt
- Triggers: https://www.youtube.com/watch?v=FZLmXocmCLU
- Triggers 2: https://www.youtube.com/watch?v=jLk4BtAKZUM&t=63s
-----------------------------------------------------------------------------------------------------------------------------
Fecha: Martes 19 Octubre
Avances:
Se empezó el SP para los movimientos, de manera que realizaba el cambio de la moneda según la fecha y la moneda tanto del movimiento como de la cuenta, cambiaba el saldo de la cuenta según el tipo de movimiento e ingresaba el movimiento en la tabla con el respectivo estado cuenta. Tambien segun el tipo de movimiento aumentaba los contadores del estado cuenta, según fuera una acción en cajero automático o humano.
Horas trabajadas: 4
Problemas:
En las primeras pruebas habían problemas en la columna NuevoSaldo en los movimientos al revisar la tabla final, esto se debió a que se realizó mal la actualización de los datos en la tabla CuentaAhorro. Se realizaron varios intentos para actualizar el saldo mínimo en el estado de cuenta activo, sin embargo no funcionaba de manera correcta.
Moralejas:
Cuando se realizan muchas transacciones es mejor poner comentarios guia para no saltarse ningún detalle necesario y entender mejor dónde se encuentran inconsistencias y/o errores.
*No se realizaron investigaciones, todo fueron análisis de los datos dentro de la BD, las PK y FK y los requerimientos en el pdf de la segunda tarea, además de soluciones de errores específicos cometidos por deslices en el código. No se realizó commit ya que aún era una versión de prueba y no estaba completo
-----------------------------------------------------------------------------------------------------------------------------
Fecha: Miércoles 20 Octubre
Avances:
Se terminó el SP para ingresar los movimientos. Se encontró una manera de actualizar el saldo mínimo en los estados de cuenta según los movimientos del mes. Se realizó el Trigger para estados de cuenta. Se inició con el SP para cerrar estados de cuenta
Horas trabajadas: 6
Problemas:
*Se terminó el SP de movimientos sin mayor dificultad, agregando las líneas para actualizar el saldo mínimo. De igual manera el Trigger no presentó problemas, se realizaron varias pruebas para ajustar los detalles sin embargo no hubo ningún problema mayor, con el tiempo y pruebas de otras cosas se fue cambiando pero de manera mínima.
Se creó de nuevo un SP sencillo para probar la llamada con los estado de cuenta. Este SP buscaba los estados de cuenta activos y menores en fecha a la fecha que se estaba revisando y nada más se cerraba y abría otro de ser necesario, sin embargo al probarlo el tiempo de ejecución fue de +10 min. Luego de muchas pruebas y tiempo, se llegó a la solución de crear una variable que ayudara a verificar si la fecha ya había sido evaluada. De esta manera el tiempo de ejecución disminuyó a 2 minutos, sin embargo, las fechas resultantes en los estados de cuenta nuevos no eran lo esperado. Al analizar las tablas se encontró que las fechas en una tabla estaban al revés de la otra tabla. Se revisó el SP y se cambiaron órdenes para tener las fechas iguales, sin embargo el problema seguía ocurriendo. Luego de detallar cada parte y condición se notó que una variable se estaba utilizando de mala manera, debía ir otra en su lugar. Al cambiar esta variable, los estados de cuenta cerraban y abrían de manera correcta.
Moralejas:
Es importante tener conciencia de cuál variable es la que se necesita realmente y también es esencial darles nombres significativos. También es prioridad descansar y analizar de manera tranquila el código ya realizado para poder encontrar inconsistencias y fallos.
*No se realizaron investigaciones. El problema del tiempo de ejecución y las fechas en estado cuenta abarcaron la mayoría del tiempo trabajado.
-----------------------------------------------------------------------------------------------------------------------------
Fecha: Viernes 22 Octubre
Avances:
Se terminó el SP para cerrar estados de cuenta, se realizaron los últimos detalles y se probó con los datos actualizados a ese momento. Se realizó el commit de los archivos nuevos.
Horas trabajadas: 3
Problemas:
Al lograr cerrar y abrir de manera eficaz los estados de cuenta, los cálculos de los intereses y comisiones no tuvieron tanto retraso. Se encontró que no venía especificado en el xml el cargo por servicio mensual por lo que se espero a que los compañeros lo arreglaran, dejando el espacio en el SP ya preparado para nada más agregar los valores. No hubo mayor problema para realizar las pruebas y detalles necesarios
Moraleja:
Al resolver un problema es mejor hacerlo poco a poco, de manera que al final los detalles son mínimos y no se presentan problemas mayores.
Referencias:
- Código SP movimientos: https://github.com/hilaryCC/Bases/blob/7e592882ffb30f0ccb33d8629462104e4ea1e79c/SP/InsertarMovimientoSP.sql
- Codigo Trigger: https://github.com/hilaryCC/Bases/blob/41d9f66335db7a95dd048d09a7ba46233516da65/SP/EstadoCuentaTR.sql
- Codigo SP Estados cuenta: https://github.com/hilaryCC/Bases/blob/41d9f66335db7a95dd048d09a7ba46233516da65/SP/CierreEstadosCuentaSP.sql
- Codigo para xml: https://github.com/hilaryCC/Bases/blob/7e592882ffb30f0ccb33d8629462104e4ea1e79c/ReadXML.sql
-----------------------------------------------------------------------------------------------------------------------------
Fecha: Lunes 25 Octubre
Avances:
Se agregó el cargo mensual actualizado en el xml, se cambió el nombre de la columna en la tabla principal y se agregó el movimiento en el SP para cerrar los estados de cuenta. Se actualizó el modelo físico.
Horas trabajadas: 30 minutos
Problemas:
Por temas de internet no se pudo realizar el commit hasta el 26 de Octubre.
Referencias:
- Codigo Estados cuenta: https://github.com/hilaryCC/Bases/blob/d508cc76f34b2a1146938a1d9304c7cda8f6c537/SP/CierreEstadosCuentaSP.sql
-----------------------------------------------------------------------------------------------------------------------------
Comments
Post a Comment