Quando um projeto está sendo desenhado, a primeira coisa a se pensar é qual será o seu propósito... qual é a melhor solução e quais são as alternativas. Na engenharia de software, tudo é feito para fornecer dados, seja uma interface gráfica ou lógica de negócios, portanto, não é de admirar que o melhor ponto de partida seja o planejamento do banco de dados.
A documentação oficial de um banco de dados pode ser muito complicada, qualquer que seja a tecnologia. Usar os melhores conceitos para uma situação específica não é uma tarefa fácil.
pgModeler é o programa que você pode usar para aumentar sua produtividade com o PostgreSQL. É gratuito, funciona em Windows, Mac ou Linux e fornece uma maneira de trabalhar com comandos DDL por meio de uma interface rica construída sobre SVG.
Instalação
A instalação é muito simples, basta fazer o download do site e executar o arquivo. Alguns sistemas operacionais já possuem o pgModeler incluído em seus repositórios, o que é uma alternativa para baixá-lo.
pgModeler é uma solução de código aberto, e você pode encontrá-la no GitHub, onde novos lançamentos são publicados.
Tem uma opção de versão paga, onde você pode dar suporte ao projeto e usar os recursos mais recentes, por exemplo, compatibilidade com as versões mais recentes do PostgreSQL.
Se você precisar de uma entrada na área de trabalho, confira a seguir. Este arquivo pode ser nomeado pgmodeler.desktop, e você pode colocá-lo em /usr/share/applications/, mas não esqueça de copiar o logotipo apresentado neste blog, salvando-o em /etc/pgmodeler/pgmodeler_logo.png.
[Desktop Entry]
Name=pgModeler
GenericName=PostgreSQL Database Modeler
Comment=Program with nice Qt interface for visual modeling PostgreSQL on Entity Relationship Diagram
Exec=pgmodeler
Icon=/etc/pgmodeler/pgmodeler_logo.png
Terminal=false
Type=Application
Categories=Qt;Database;Development;
Interface gráfica
O currículo dos cursos de tecnologia da informação, incluindo faculdades, contém disciplinas de modelagem de dados, com UML como padrão para design e documentação de projetos.
A interface gráfica do pgModeler permite trabalhar com um tipo de diagrama específico para bancos de dados, o Entity Relationship Diagram (ERD), reproduzindo perfeitamente o que você construiu dentro do seu cluster PostgreSQL.
Vários idiomas estão disponíveis:
- Inglês (pt_BR);
- Espanhol (es_ES);
- Francês (fr_FR);
- Holandês (nl_NL);
- Português (pt_BR); e
- Chinês (zh_CN).
A impressão do que você construiu também está disponível, e são possíveis personalizações na aparência, alterando a fonte e as cores de esquemas, tabelas, relacionamentos, etc.
Recursos
Os recursos do pgModeler são simplesmente ferramentas para ajudá-lo a navegar entre modelos lógicos e físicos.
Um modelo lógico, é o diagrama. Você pode usá-lo para transformar a ideia do seu cliente, em um projeto bem documentado que outra pessoa possa entender no futuro, e fazer modificações nele.
O modelo físico é o script, o código SQL. O PostgreSQL entende isso, e o pgModeler também.
Através de seu algoritmo de engenharia reversa, você pode se conectar ao seu cluster PostgreSQL e observar seu modelo de domínio existente com uma perspectiva diferente, ou construí-lo primeiro e depois criar o modelo de domínio executando o script, gerado pelo que você construiu no diagrama.
Diagrama de relacionamento de entidade
Depois de entender sua finalidade, vamos ver como fica um diagrama para um projeto bem simples onde você pode visualizar a relação entre as mesas cliente e filme, denominada aluguel.
Observe as linhas entre as tabelas, elas são fáceis de ver e, mais importante, de entender. As chaves primárias e estrangeiras são os pontos de partida para visualizar os relacionamentos e, em suas bordas, a cardinalidade está sendo mostrada.
As restrições que representam as chaves podem ser vistas, como pk, fk e mesmo o NOT NULL, como nn, em verde à direita de cada tabela. O esquema é denominado store, e a imagem acima foi gerada pelo próprio programa.
Anteriormente vimos que os diagramas são o modelo lógico, que pode ser aplicado em um cluster PostgreSQL. Para aplicá-lo, uma conexão deve ser estabelecida, para este exemplo, criei um cluster rodando dentro de um container Docker.
Agora com a conexão do banco de dados configurada e testada, a exportação é fácil. As preocupações de segurança devem ser consideradas neste momento, como estabelecer SSL com seu cluster.
A seguir, o pgModeler cria o esquema da loja, dentro de um banco de dados completamente novo chamado blog_db, como eu queria, não esquecendo de mencionar a nova função, com permissão de login.
Processo de exportação finalizado com sucesso! – Ok, há um erro, mas foi finalizado com sucesso, com certeza.
[email protected]:~$ psql -U thiago -w -d blog_db;
psql (10.10 (Debian 10.10-1.pgdg90+1))
Type "help" for help.
blog_db=> set search_path to store;
SET
blog_db=> \dt
List of relations
Schema | Name | Type | Owner
--------+----------+-------+--------
store | customer | table | thiago
store | film | table | thiago
store | rental | table | thiago
(3 rows)
blog_db=> \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
thiago | | {}
Conclusão
Os modelos de domínio também são conhecidos como minimundos e raramente você verá o mesmo sendo aplicado em diferentes projetos. O pgModeler pode ajudá-lo a focar no que é realmente importante, evitando perda de tempo com a sintaxe SQL.