Introducción
¡Hola nuevamente! Esta vez quiero compartirles mi experiencia utilizando inteligencia artificial para resolver una necesidad muy específica que tenía en mi trabajo. Por lo general, cuando comienzo un proyecto, prefiero diseñar la base de datos de forma visual. Esto me permite tener una mejor perspectiva de su estructura y detectar inconsistencias con mayor facilidad que revisando directamente un script SQL.
Para esta tarea normalmente utilizo Visual Paradigm en su versión Community. Sin embargo, esta edición no permite exportar scripts SQL, por lo que es necesario adquirir una licencia de pago para habilitar esta funcionalidad. La verdad es que no estaba dispuesto a pagar los 349 USD que costaba la versión más económica que permitía hacerlo, especialmente porque sería una herramienta que utilizaría exclusivamente para mi trabajo.
Hace algún tiempo descubrí que Visual Paradigm permitía exportar los diagramas en formato XML, así que desarrollé una pequeña aplicación de consola en C# que leía ese archivo y generaba el script SQL. Sin embargo, el resultado no fue tan bueno como esperaba: tenía problemas para detectar las dependencias entre tablas, especialmente cuando existían referencias circulares. Aunque solo me ocurrió una vez, era suficiente para que no pudiera confiar completamente en la herramienta.
Hace unos días decidí que podía desarrollar mi propia aplicación. Primero comencé a buscar, con ayuda de ChatGPT, controles gratuitos para Windows Forms que pudieran servirme, pero ninguno terminó de convencerme. Como tampoco tenía experiencia desarrollando controles gráficos personalizados para WinForms, pensé: “Tal vez podría utilizar Codex para crear esos controles y encargarme yo del resto”. Ya había intentado desarrollar una aplicacion, así que tenía bastante claro qué funcionalidades necesitaba y cómo quería que funcionaran.
Funciones Principales
- Diseñar las base de datos a partir de un diagrama
- Controles graficos “arrastrables”
- Soporte para multiples motores de bases de datos (SQL Server, MySQL, SQLite y Firebird)
- Guardar y abrir los proyectos generados por la misma aplicacion
- Generar el script SQL
Funciones Secundarias
- Deshacer/Rehacer
- Zoom
- Mover los puntos de conexion de la relacion
- Crear puntos en las relaciones para modificar la trayectoria de la flecha
Primera versión: C# y Windows Forms
Abrí Codex, le compartí algunas imágenes de referencia de Visual Paradigm y traté de ser lo más claro posible al describir el tipo de controles que necesitaba. El resultado me sorprendió bastante: en muy poco tiempo había conseguido lo que para mí era la parte más difícil del proyecto, los controles gráficos. Al ver que podía avanzar tan rápido, decidí continuar y terminé construyendo una aplicación prácticamente completa.
Debo confesar que la interfaz generada por Codex no era exactamente lo que tenía en mente. Por eso, tuve que intervenir directamente en el código utilizando Visual Studio, realizar algunos ajustes visuales y agregar iconos para conseguir un resultado más cercano a lo que buscaba.

Se me terminaron los tokens mientras intentaba solucionar algunos problemas y me quedé a medio camino. Aunque ya había conseguido algo que me gustaba, tuve que salir de casa un rato. Antes de hacerlo, volteé a ver una MacBook Air M1 que tengo y pensé: “Si fuera multiplataforma podria continuar desde la Macbook” y todavia no terminaba de pronunciar esas palabras cuando una vocecita me dijo “¿y si la hacemos multiplataforma?”, entonces pronto descargue Codex en la Macbook y cree otra cuenta jajaj.
Kotlin y JavaFX
El primer reto fue elegir la tecnología que utilizaría. Ya había probado Codex con Blazor Server y MudBlazor, pero el resultado no terminó de convencerme, así que descarté la posibilidad de desarrollar una versión web. Entonces recordé que anteriormente había trabajado un poco con Kotlin y pensé que JavaFX podría ser una buena alternativa para crear una aplicación de escritorio multiplataforma.
Una vez más, compartí con Codex capturas de Visual Paradigm y de la aplicación que ya había desarrollado en .NET. Le expliqué cómo quería que funcionara y, cuando menos me di cuenta, ya tenía una primera versión funcional. Aunque todavía presentaba varios detalles por corregir, al igual que la versión de Windows, ya tenía una base sobre la cual continuar trabajando.

Llegado a este punto, decidí crear un repositorio en GitHub. Por un lado, quería mantener un respaldo del trabajo realizado y, por otro, necesitaba poder trabajar sobre el mismo proyecto tanto en mi MacBook como en mi computadora de escritorio.
Como ya tenía la experiencia de haber desarrollado la versión para .NET, pude avanzar mucho más rápido en esta segunda implementación. Esto me permitió concentrarme en corregir los problemas que iban surgiendo e incorporar algunas funcionalidades:
Funcionalidades de DBDesigner
- Un explorador para localizar fácilmente tablas en diagramas grandes.
- Una sección de configuración.
- Atajos de teclado para las principales funciones.
- Compatibilidad con tema oscuro.
- Un logotipo y un icono creados a partir de la combinación de otros iconos con ayuda de ChatGPT.
Mejorando la interfaz de usuario
Y sí, aunque la interfaz que generó Codex era bastante mejor que la de la primera versión en .NET, todavía no terminaba de convencerme. Así que, una vez resueltos los principales problemas de funcionamiento, decidí dedicar tiempo a mejorar su apariencia hasta conseguir un diseño con el que me sintiera más cómodo.


Conclusión
Y así fue como terminé desarrollando DBDesigner, una herramienta que espero que me resulte útil en mi trabajo diario. A partir de ahora comenzaré a utilizarla en proyectos reales para comprobar su funcionamiento, detectar posibles problemas y descubrir qué otras funcionalidades podría necesitar.
Este es apenas el comienzo del proyecto, así que seguramente habrá nuevas mejoras y características conforme vaya utilizándolo.