Si recordáis, hace unos días os comenté que había empezado a hacer un editor gráfico para sqlite. La idea era manejar en una pantalla más o menos como ésta:
Hacer que las líneas, que representan las relaciones Foreign Key entre las tablas se muevan y sigan a la tabla según las mueves. Que si haces drag and drop entre dos campos de dos tablas se establezca la relación de foreign key y que pulsando botón derecho sobre los cuadraditos verdes puedas cambiar el tipo de acción de la foreign key o eliminarla, etc.
Que con doble click sobre la tabla se abre un formulario de edición donde puedes añadir, borrar o cambiar cualquier campo, etc.
Todo muy bonito. Lo mejor que ya lo tengo hecho y funciona... más o menos. Pero hasta ahora lo he probado con pequeñas bases de prueba hechas por mí. Esta tarde se me ha ocurrido hacer la prueba con la base de datos que incorpra Calibre en sus bibliotecas y que contiene tropecientas tablas... sin ninguna Foreign Key. Funciona a la manera antigua (y compatible con todas las versiones de sqlite por antiguas que sean) a base de Triggers y demás posibilidades. Crea tablas virtuales y tablas reales con campos virtuales, usa tablas sin rowid y con rowid y en total dispone de 47 tablas, 74 índices, 59 Triggers y 17 Vistas.
¿Cómo representas eso de forma gráfica?. La pantalla se convierte en un galimatías de cuadraditos sin orden ni concierto que en lugar de ayudar lo que hacen es estorbar.
Entonces se me ha ocurrido una idea ¿Por qué no se va a poder hacer con cada uno de los tipos lo mismo que se hace con las tablas?. Una vista se puede tratar como una tabla (menos en lo que a la edición se refiere), y un Trigger se puede tratar (más o menos) como una relación Foreign key.
Hacemos algún tipo de panel o algo así y podemos dibujar rayitas en los trigger que vayan a las tablas que intervienen en su código interior.
y podemos asignar un colorín a cada tipo de línea y a cada tipo de objeto, y si hay demasiados subividir en pantallas y vistas generales y si...
y de repente ves que tienes curro para meses, años quizá.
Me estoy planteando si dejar mi programa en un mero visor gráfico de foreign keys... pero me parece algo triste y pobre hacer eso.
Ahora lo estoy contando después de todo el día tecleando y como que no estoy muy optimista.
Mañana será otro día.
Saludos