La gestión de cambios en bases de datos espaciales es crucial para mantener la integridad de los datos y permitir la reversión a estados anteriores. Los videos de CartoSiG UPV exploran cómo implementar un sistema de histórico sencillo en PostgreSQL/PostGIS, utilizando herramientas de inteligencia artificial como ChatGPT y Gemini para agilizar el proceso de desarrollo.
Parte 1: Fundamentos y Estructura del Histórico
El primer video, «Módulo 13. Creación de un histórico en PostgreSQL/PostGIS en plpgsql con chatgpt. Parte 1 de 2», introduce el concepto de un histórico para bases de datos espaciales, con el objetivo de rastrear inserciones, actualizaciones y eliminaciones en tablas PostGIS, como el fichero de cartografía cadastralparcel.sql. Esto permite deshacer cambios y mantener un registro detallado de las modificaciones.
Puntos clave de la primera parte:
- Uso de IA para la Generación de Código: Se demuestra cómo ChatGPT y Gemini pueden generar el código PL/pgSQL necesario, como el fichero
histo_gpt.sql, a partir de prompts. Puedes ver el chat completo de GPT aquí:chat_gpt.html. - Estructura de la Tabla Histórica: Se crea una copia de la tabla original en un nuevo esquema, añadiendo campos para registrar la fecha del cambio, el tipo de cambio (insertar, actualizar, eliminar), el usuario, la dirección IP, el GID original y un array de texto para listar los campos modificados en una actualización.
- Lógica de las Funciones Trigger: Se explican las funciones para manejar operaciones de inserción, eliminación y actualización, asegurando que solo los valores cambiados se registren en el histórico durante las actualizaciones.
- Funcionalidad de Restauración: Se presenta una función para restaurar la tabla a un estado anterior basado en una fecha específica.
- Demostración Práctica: El video incluye una demostración en QGIS, mostrando cómo las operaciones en la tabla original se reflejan en el histórico y cómo se puede restaurar el estado.
Parte 2: Dinamización y Refinamiento con Gemini
La segunda parte, «Módulo 13. Mejorando el histórico en PostgreSQL/PostGIS en plpgsql con gemini. Parte 2 de 2», se centra en mejorar el script del histórico para hacerlo dinámico, permitiendo su uso con cualquier tabla, como el fichero nucleosche.sql.
Puntos clave de la segunda parte:
- Dinamización del Script: El objetivo principal es transformar el script generado previamente por ChatGPT en una función PL/pgSQL que acepte el nombre de una tabla como argumento, generando dinámicamente la tabla histórica y sus triggers.
- Interacción con Gemini: Se muestra cómo se le proporciona a Gemini el script existente y se le solicita la creación de funciones dinámicas para la creación y restauración del histórico, prestando atención al escape de código dentro de las cadenas. Puedes ver el chat completo de Gemini aquí:
chat_gemini.html. - Funciones Dinámicas: Se destaca la función
CREATE OR REPLACE FUNCTION crear_historico_tabla, que utiliza el métodoformatde PostgreSQL para construir sentencias SQL de forma dinámica, incluyendo nombres de columnas y tipos. El código generado por Gemini se encuentra engemini_historico.sql. - Funciones de Eliminación y Restauración Mejoradas: Se presenta la función
eliminar_historico_tablapara eliminar los componentes del histórico y la funciónrestaurar_tabla_a_fecha, con una corrección crucial para evitar la modificación incorrecta de la clave primaria (gid) durante las actualizaciones. - Importancia de la Revisión del Código: El video enfatiza la necesidad de revisar y comprender cada línea de código generada por la IA para asegurar su corrección y evitar problemas. Se resalta un error de clave duplicada durante una restauración inicial y cómo se corrigió el código.
Conclusión
Ambos videos demuestran el poder de combinar PostgreSQL/PostGIS con herramientas de IA para desarrollar soluciones avanzadas de gestión de bases de datos. La creación de un histórico dinámico no solo mejora la trazabilidad y la capacidad de auditoría, sino que también ofrece una robusta funcionalidad de «deshacer» para cualquier tabla espacial, optimizando la gestión de datos y reduciendo errores. La clave, como se subraya en el segundo video, reside en la revisión crítica y la comprensión del código generado por la IA para garantizar su fiabilidad y eficiencia.
Recursos Adicionales:
- Fichero de cartografía utilizado en el primer video (QGIS):
cadastralparcel.sql - Fichero de cartografía utilizado en el segundo video (QGIS):
nucleosche.sql - Código fuente generado por ChatGPT (primer video):
histo_gpt.sql - Código fuente generado por Gemini (segundo video):
gemini_historico.sql - Fichero HTML con el chat de ChatGPT:
chat_gpt.html - Fichero HTML con el chat de Gemini:
chat_gemini.html


