2020-07-26 – Um mapeador de tabelas relacionais para terminais de Linux que esbocei em Python e que criarei em C++
Uma imagem de 26 de Julho, em que decidi criar um dia destes uma app de Linux que mapeia relações em bases de dados relacionais, mais na descrição abaixo que partilhei no dia:
«Um programita que fiz neste fim de semana, para colocar sob a forma de diagrama, as relações de bases de dados relacionais, neste caso SQL, e vou aproveitar para tornar stand-alone em C++, o que explico mais abaixo.
Há uma piada de programadores que diz, que um programador, é capaz de perder 10 dias a criar algo, para poupar depois trabalho de 10 minutos. Isto foi parecido, um diagrama destes podia ser feito com caneta num papel, ou até num Excel, em 10 minutos, contudo, perdi aqui umas boas horas a criar uma aplicação que fizesse isto.
Porquê? Agora vem uma ideia engraçada. Bill Gates dizia: “Se queremos optimizar processos, temos de ver como é que os mais preguiçosos trabalham, porque eles conseguem sempre encontrar caminhos mais fáceis e eficientes para trabalhar o menos possível”. E ele tem razão, e eu não é que seja preguiçoso, mas prefiro fazer coisas de forma mais eficiente e com menos trabalho, do que o contrário.
Por isso, quando me pediram para criar um mapa relacional de uma base de dados, pensei: “Fónix, só o trabalho de fazer isto à pata, vou ver se encontro algum software que faça isto na Internet!!!”. Resultado: Não encontrei.
Por isso pensei: “Epá, nestas férias da IOS, em que tenho o IOS simulator parado, aproveito, e entretenho-me a criar um programa que faça isto”.
Por acaso, deu mais trabalho do que pensava, pois tive de criar aqui algumas abstracções, ou seja, desenhar tudo num “ecrã virtual”, calcular posições de tabelas e campos nela, as ligações entre as foreign keys, calcular os locais onde se cruzam, etc, etc, para ter este efeito final.
Mas o resultado ficou giro, gostei, esqueci-me foi de uma foreign key ali na tabela isolada abaixo na imagem.
No Futuro, vou ver se passo isto para algo stand alone, um comando novo para criar mapas de relações, em terminal, visível em qualquer terminal vty (para quê ser GUI se sendo terminal funciona em ambos os locais?), e não só ele se ligará a uma base de dados e sacará as informações para desenhar o mapa, como também poderá aceitar ler as informações de um ficheiro específico, ou até exportar não só para mapa como também para JSON ou outra coisa qualquer? Nem sei.
Vou ver se também faço com que ele crie as relações entre tabelas expostas em várias colunas e não apenas numa como está, para ficar ainda mais giro.
Mas para já, ficou algo giro, gostei, e vai ser algo que vou transformar num comando Linux.
A partir de agora, sempre que quiser ver relações entre tabelas numa base de dados, usarei mais um comando feito por mim à minha medida.
Só falta criá-lo, aliás ele está criado mas falta melhorá-lo e torná-lo num comando real.
2020-07-26.»