Desenhador ERD

Conceba um esquema relacional sem um servidor de base de dados: acrescente tabelas, dê-lhes colunas com tipos, chaves e valores predefinidos, e depois ligue-as com relações. O diagrama entidade-relação é redesenhado à medida que escreve, e o mesmo modelo exporta-se como DDL CREATE TABLE para MySQL, PostgreSQL, SQL Server, SQLite ou Oracle, como código-fonte Mermaid erDiagram, ou como JSON de esquema portátil que pode reimportar aqui ou abrir no Gerador de migrações. Tudo é executado localmente.
O que é um ERD? ERD é a abreviatura de diagrama entidade-relação, e é o desenho de conceção de uma base de dados, e não o registo de uma já concluída. Uma comparação útil é a planta de um edifício: a base de dados em funcionamento é o edifício, o ERD é a planta, e ninguém deita betão primeiro e mede depois. Esta página é a mesa de desenho dessa planta — aqui molda o modelo, e o DDL, o código Mermaid e o JSON do esquema são todos impressos a partir desse mesmo modelo, pelo que a imagem não se pode afastar do SQL que produziu.
O mesmo diagrama em três níveis. Um ERD conceptual nomeia apenas as coisas que importam e como se relacionam, em palavras que um não programador consegue verificar. Um ERD lógico acrescenta as chaves que identificam cada coisa e resolve as ligações muitos-para-muitos, mantendo-se livre de qualquer dialeto de motor. Um ERD físico preenche o que um produto em particular exige — larguras de tipo, valores predefinidos, nulabilidade, restrições de unicidade, regras de eliminação — que é o nível que exporta aqui quando escolhe MySQL, PostgreSQL, SQL Server, SQLite ou Oracle.
De onde vêm as caixas. Leia a descrição do sistema e sublinhe os substantivos: cliente, fatura, produto, envio. Essas são as tabelas. Os factos e as qualidades ligados a um substantivo — uma data de fatura, um preço unitário, um endereço de correio eletrónico — são as suas colunas. Um verbo que liga dois substantivos, como em “uma encomenda é feita por um cliente”, é uma relação, e guarda-se copiando a chave identificadora da linha pai para a linha filha como chave estrangeira.
Quando uma ligação é muitos-para-muitos. Uma receita usa muitos ingredientes e um ingrediente aparece em muitas receitas, pelo que nenhuma das tabelas pode guardar a chave da outra sem se repetir. A resposta é uma terceira entidade cuja única função é emparelhá-las — a tabela de junção (ou associativa), com uma chave estrangeira por cada lado, muitas vezes com esse par de chaves como a sua própria chave primária. Um modelo que é sobretudo composto por tabelas de emparelhamento é perfeitamente normal: uma linha muitos-para-muitos num quadro branco tem sempre de se tornar uma caixa no esquema real.
Porque é que vale a pena antes de existir o DDL. Uma linha errada num desenho custa um minuto a apagar; o mesmo erro descoberto depois da publicação custa uma migração sobre dados reais. Um diagrama é também o único artefacto que os não programadores conseguem rever, e as falhas de relação — uma cardinalidade ao contrário, uma chave única em falta, linhas filhas que podem ficar sem pai — aparecem aqui como linhas obviamente más, enquanto num ficheiro DDL de 400 linhas se escondem entre as restrições.
Direto ou inverso? Este desenhador vai para a frente: modelo primeiro, DDL depois. A página irmã SQL para ERD faz o caminho inverso — cole instruções CREATE TABLE existentes e ela reconstrói o diagrama, que é o caminho mais rápido quando a base de dados já existe.
1 — Tabelas
Editar Nome da tabela Colunas Relações Actions
2 — Colunas
Coluna Tipo PK AI NN UQ Predefinido Actions
PK = chave primária, AI = incremento automático / identidade, NN = não nulo, UQ = único
3 — Relações (chaves estrangeiras)
Tabela filha Coluna filha Actions Tabela pai Coluna pai Ao eliminar Actions
Uma chave estrangeira transforma-se numa linha CONSTRAINT ... FOREIGN KEY no DDL.
4 — Exportar
Código-fonte Mermaid erDiagram
O modelo JSON é o formato de intercâmbio da família de ferramentas de base de dados: cole-o no Gerador de migrações como esquema antes/depois, ou reimporte-o aqui para continuar a editar mais tarde.