Ferramenta gratuita
PostgreSQL para diagrama ER
Cole a saída do pg_dump do jeito que está, com linhas SET, restrições ALTER TABLE ONLY e blocos COPY, e receba um diagrama ER de cada tabela e chave estrangeira. Teste o exemplo de SaaS multilocatário, que usa colunas de identidade, um tipo enum e uma tabela particionada.
Resultado de exemplo
Como funciona
Cole ou solte a saída do pg_dump
Um dump em texto puro, um arquivo de migração ou instruções CREATE TABLE vindas do psql, do pgAdmin ou de um ORM. Não é preciso limpar o dump antes.
Veja cada tabela com suas chaves
As chaves que o pg_dump escreve no fim do arquivo são ligadas às suas tabelas, cada conexão de chave estrangeira começa na própria coluna, e um dump com vários esquemas ganha uma moldura por esquema.
Abra no Archboard
Salve como um novo diagrama para reorganizar, anotar, compartilhar um link ou exportar em SVG e PNG. Para se cadastrar basta uma conta Google ou GitHub.
Extraia o esquema de banco de dados do PostgreSQL
Rode este comando no banco de dados e depois cole o schema.sql ou solte o arquivo:
--schema-only deixa as linhas de dados de fora, e --no-owner e --no-privileges removem as linhas OWNER TO, GRANT e REVOKE. Acrescente --schema=sales para gerar o dump de um só esquema. Troque mydb pelo nome do banco e acrescente -h e -U ou uma URI de conexão, se precisar.
pg_dump --schema-only --no-owner --no-privileges mydb > schema.sql
Sintaxe do PostgreSQL em um dump
O que acontece com cada construção de um arquivo do pg_dump:
serial · GENERATED … AS IDENTITY- Lidas como colunas comuns que mantêm o tipo como está escrito; o padrão de identidade ou de sequência não aparece. Uma coluna serial só é marcada como PK quando uma PRIMARY KEY diz isso, porque serial sozinho não cria uma chave.
CREATE TYPE … AS ENUM- O nome do tipo enum vira o tipo da coluna, por exemplo order_status; os rótulos dele não aparecem no cartão.
CREATE SCHEMA- Quando o dump tem mais de um esquema, cada esquema com tabelas vira uma moldura em volta delas, e as chaves estrangeiras entre esquemas atravessam as molduras.
ALTER TABLE ONLY … ADD CONSTRAINT- Lido. O pg_dump escreve chaves primárias, restrições únicas e chaves estrangeiras bem no fim, e elas são aplicadas quando todas as tabelas já são conhecidas.
PARTITION OF- Recolhidas na tabela pai, então uma tabela dividida por mês vira um único cartão; a prévia informa quantas partições foram recolhidas. ATTACH PARTITION é tratado da mesma forma.
$$ … $$- Corpos de funções e procedimentos entre cifrões são ignorados por inteiro, então os pontos e vírgulas dentro deles não cortam uma instrução no meio. Dentro de um bloco DO, CREATE TABLE e ALTER TABLE … ADD CONSTRAINT continuam sendo lidos.
COPY … FROM stdin- As linhas de dados seguintes são ignoradas sem serem lidas, até a linha \. que as encerra.
\restrict- Ignorado. Versões recentes do pg_dump colocam linhas \restrict e \unrestrict em volta do dump; essas linhas e outros metacomandos do psql, como \connect, são ignorados.
O que um diagrama do pg_dump deixa de fora
- Os dados das tabelas. Linhas em blocos COPY e em instruções INSERT não são lidas, então um dump com dados desenha o mesmo diagrama que um feito com --schema-only.
- Funções, procedimentos, triggers e código de blocos DO. Os corpos são ignorados e contados; de um bloco DO só entram as tabelas e as restrições.
- Políticas de acesso por linha (RLS), GRANT e REVOKE e os donos dos objetos. Quem pode ler ou alterar uma tabela não aparece no diagrama.
- O que vem de um servidor PostgreSQL em execução. Nenhuma conexão é aberta, então tamanhos de tabela, contagens de linhas e extensões instaladas não aparecem.
Perguntas sobre PostgreSQL
Quais opções do pg_dump devo usar?
pg_dump --schema-only --no-owner --no-privileges gera a saída mais curta, mas qualquer dump em texto puro funciona, com dados ou não. Um arquivo no formato personalizado, feito com -Fc, não é texto SQL: converta com pg_restore --schema-only -f schema.sql seguido do nome do arquivo.
Como vários esquemas aparecem?
Cada esquema com tabelas vira uma moldura com as tabelas dentro, então public, billing e audit ficam separados, e as chaves estrangeiras entre eles atravessam as molduras. Para desenhar um só esquema, gere o dump dele sozinho com --schema=nome, ou -n na forma curta.
O que acontece com tabelas particionadas?
Partições criadas com PARTITION OF, ou anexadas depois com ATTACH PARTITION, são recolhidas na tabela pai, então uma tabela payments dividida em doze partições mensais aparece como um único cartão. A prévia informa quantas partições foram recolhidas.
Enums e tipos próprios aparecem?
Um enum criado com CREATE TYPE … AS ENUM é usado como tipo da coluna, então uma coluna status mostra order_status, mas os rótulos do enum não são listados. Domínios e tipos compostos não viram cartões; as colunas que os usam continuam mostrando o nome do tipo como está escrito.
Algo é salvo quando colo um dump?
A prévia não é salva. Quando você escolhe Abrir no Archboard, o diagrama desenhado, com cartões de tabela, nomes e tipos de colunas, molduras de esquema e conexões, é salvo como um novo diagrama no seu espaço de trabalho. Mudanças posteriores no banco de dados não o atualizam.
A ferramenta de diagrama ER para PostgreSQL é gratuita?
Sim. Colar um dump e ver o diagrama não exigem conta. Para abrir o diagrama no Archboard basta uma conta gratuita.
Abra um canvas em um minuto
Entre com Google ou GitHub. Grátis para um assento. Faça upgrade quando a equipe entrar.