Ir al contenido principal

Entradas

Día 20. Creamos dos procedimientos almacenados.

 En primer lugar creamos un procedimiento (almacenado) para que se actualicen automáticamente las fechas de validez de los tipos de IVA cuando añadimos un registro nuevo a la tabla. Vemos el funcionamiento del procedimiento. Con este procedimiento se hacen dos actualizaciones en la misma tabla, por un lado se hace una inserción y por otro lado una actualización de otro registro diferente al insertado. Suponemos que si se produce un error a mitad de las dos operaciones (inserción y actualización) se producirían inconsistencia de los datos.  Para comprobarlos generamos los errores manualmente y comprobamos que no se producen inconsistencias porque el procedimiento se ejecuta dentro de una transacción . Explicamos, más o menos, qué es una transacción. Hay dos tipos de procedimientos almacenados, el creado anteriormente es un procedimiento ejecutable , así que para finalizar vemos como se crea un procedimiento seleccionable , que devuelve una tabla de datos,  y como se emplea.
Entradas recientes

Día 19. Creamos una función para obtener el trimestre

 Comenzamos viendo la sentencia BETWEEN que generalmente es poco utilizada. Vemos como agrupar por campos calculados. Al principio no nos funciona y por ello tenemos que hacer una consulta de consulta o consulta con subconsulta. A continuación agrupamos por meses y por meses y años, pero vemos que no existe una función para extraer los trimestres y poder hacer agrupaciones trimestrales. Así que en vista de que no existe la función que necesitamos, la creamos ¡y no lo hacemos ni con BASIC ni con Python!

Día 18. ¡Vuelvo a desnormalizar!

Tras añadir una cantidad apreciable de nuevos datos para poder hacer pruebas, en primer lugar vemos y comentamos un poco el rendimiento de las consultas que teníamos hechas para obtener los datos de la vista y los informes. Como comentario, añadido a lo que se comenta en el vídeo, podemos ver que las consultas, ya con una cantidad apreciable de datos, tardan bastante menos que con HSQLDB. De hecho, se obtienen los datos de casi 17500 registros, con combinación de 5 tablas, en milésimas de segundo, aunque Base tarda un poquito más en mostrar los resultados. Os recuerdo que no he actualizado los informes, a pesar de que he cambiado la consulta y vistas subyacentes, por lo que habría que actualizarlos (pero de momento no lo haré, creo que no aportaría nada nuevo). En la segunda parte vuelvo a desnormalizar la tabla Detalles. La desnormalización, en este caso la justifico, y explico que, bajo mi punto de vista, las normas de normalización, no siempre son imperativas. Para la desnormalizaci

Día 17. Crear un disparador (trigger). Tabla de log

En este día, un poco desordenado, creamos un trigger o, en español, disparador. Los disparadores son funciones que se ejecutan automáticamente al hacer modificaciones en los registros de una tabla determinada. Para ver el funcionamiento de los disparadores creamos una tabla de log, en la que se registran los cambios de la tabla Detalles. Bueno, aunque me he equivocado (y corregido) un par de veces, espero que se entienda bien.

Día 16. Empleo de la tabla desde-hasta. Subconsultas

Hoy vemos como emplear la tabla desde-hasta de tipos de IVA que creamos el último día. Para ello, en primer lugar creamos una consulta para ver el funcionamiento. A continuación esa consulta, la empleamos como subconsulta en la consulta que ya teníamos con todos campos.

Día 15. Tabla desde-hasta para IVA. Validación de datos con dominios

Comenzamos el día creando una tabla para valores de IVA desde-hasta en la que se marcan las fechas de validez de cada tipo. A continuación, utilizando una de las posibilidades de Firebird, creamos dos dominios, uno para que el campo tenga un valor predeterminado y el otro dominio para la validación de datos de entrada.  La validación de datos es importante en una base de datos y, con los dominios, Firebird nos proporciona un método fácil y efectivo de validación. Este día tienen dos vídeos, tranquilos, no es por la duración de los mismos, como alguna vez ha ocurrido, sino porque he sufrido una interrupción y he tenido que parar.  Sí, ya se que podría editar los vídeos y juntarlos, y que podría editarlos para eliminar todas las veces que me equivoco, que son muchas, pero prefiero que se vea el trabajo tal y como lo hago, sin maquillajes y, además, prefiero dedicar el tiempo a seguir aprendiendo, mejor que a editar los vídeos.

Día 14. Normalizar campo IVA de Detalles de la factura

Pensando en qué iba a hacer a continuación, me he dado cuenta de que la tabla de detalles no está normalizada. Como se que la normalización es importante, voy a corregirlo. De paso preparo todo para poder facturar diferentes tipos de impuesto. Para poder modificar esto, necesito hacer varios (muchos) cambios, lo que me hace reflexionar sobre la importancia de tener claro el diseño de la base de datos y de las tablas antes de lanzarse a crear un "programa" con la base de datos. En realidad muchos de los errores de diseño que he cometido (¡quizá no todos!), lo he hecho a propósito, para ir viendo paso a paso problemas que podemos tener y la manera de solucionarlos, porque, vuelvo a recordar, el objetivo de estos vídeos no es crear un programa de facturación que podamos copiar y utilizar;  el objetivo era ver si las capacidades de Base y Firebird nos podrían servir para algo serio y de paso detectar errores. También, para mi, otros objetivos eran aprender, ¡y ya os digo que esto