Ferramenta gratuita

MySQL e MariaDB para diagrama ER

Cole um arquivo do mysqldump ou um script do MySQL Workbench, com crases, opções ENGINE e comentários de versão, e receba um diagrama ER das tabelas e chaves estrangeiras. Dumps do MariaDB são lidos do mesmo jeito. Teste o exemplo de loja com produtos, variantes, pedidos e avaliações.

Resultado de exemplo

Diagrama de exemplo desenhado a partir de um exemplo de MySQL
Experimente um exemploVitrine de loja

Como funciona

  1. Cole ou solte seu dump do MySQL

    A saída do mysqldump ou do mariadb-dump, uma exportação do Workbench ou do phpMyAdmin, ou o texto CREATE TABLE que o SHOW CREATE TABLE mostra.

  2. Veja as tabelas e suas conexões

    Cada tabela vira um cartão com suas colunas e chaves. Chaves estrangeiras, declaradas como restrições ou escritas em linha com REFERENCES, viram conexões entre as colunas correspondentes.

  3. 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 MySQL

Rode este comando e depois cole o schema.sql ou solte o arquivo:

  1. --no-data deixa as linhas de dados de fora, e --skip-comments e --compact removem o cabeçalho de comentários e as linhas DROP TABLE, LOCK TABLES e SET NAMES. Troque mydb pelo nome do banco e acrescente -u e -p se precisar. No MariaDB, o mariadb-dump aceita as mesmas opções.

    mysqldump --no-data --skip-comments --compact mydb > schema.sql

Sintaxe do MySQL em um dump

O que acontece com cada construção de um arquivo do mysqldump:

`order_items`
Lido. Nomes entre crases correspondem aos mesmos nomes escritos sem elas, e nomes entre aspas duplas também funcionam quando o dump ativa ANSI_QUOTES.
ENGINE=InnoDB
Ignorado junto com DEFAULT CHARSET, COLLATE e as outras opções de tabela; a tabela em si é lida.
AUTO_INCREMENT
Não aparece: a coluna mantém o tipo, como INT UNSIGNED. O contador AUTO_INCREMENT escrito depois da tabela também é ignorado.
REFERENCES products (id)
Desenhado como relacionamento. O MySQL anterior à 9.0 aceita essa forma em linha sem aplicá-la, então a prévia adiciona uma nota quando encontra uma.
KEY idx_name (name)
Um índice comum, então não ganha marca. UNIQUE KEY é marcado como UK, e KEY escrito logo depois de uma coluna significa chave primária, como no MySQL.
/*!40101 … */
Tratados como comentários e ignorados, inclusive as linhas SET que o mysqldump coloca em volta de cada tabela.
DELIMITER ;;
Entendido: procedimentos e funções entre linhas DELIMITER são ignorados por inteiro e contados, e as tabelas que vêm depois continuam sendo lidas. Os triggers e eventos que o mysqldump escreve ali ficam dentro de comentários de versão, então são ignorados como comentários.
ENUM (…) · SET (…)
Mostrados como os tipos de coluna enum e set; os valores permitidos não são listados.

O que um diagrama do MySQL deixa de fora

  • Procedimentos armazenados, funções, triggers e eventos; nenhum deles é desenhado. A prévia conta os procedimentos e as funções; os triggers e eventos que o mysqldump escreve dentro de comentários de versão são ignorados como comentários.
  • Tudo o que fica dentro de comentários de versão como /*!50100 PARTITION BY … */. Esse texto conta como comentário, então particionamento e outras opções ligadas a uma versão não aparecem.
  • Linhas de INSERT estendidos. São ignoradas sem serem lidas, mesmo quando uma única linha de INSERT tem vários megabytes.
  • O que vem de um servidor MySQL ou MariaDB em execução. Nenhuma conexão é aberta, então contagens de linhas, tamanhos de tabela e configurações do servidor não aparecem.

Perguntas sobre MySQL e MariaDB

Qual comando do mysqldump funciona melhor?

mysqldump --no-data --skip-comments --compact mydb > schema.sql gera só as instruções CREATE TABLE, sem linhas de dados nem as linhas que as envolvem. Um dump completo também funciona: as instruções INSERT são ignoradas, então o diagrama é o mesmo, só o arquivo fica maior.

Funciona com MariaDB?

Sim. O MariaDB grava o mesmo formato de dump, então escolha MySQL / MariaDB ou deixe a detecção decidir. A saída do mariadb-dump, nomes entre crases e AUTO_INCREMENT são lidos como no MySQL, e REFERENCES em linha são desenhadas como relacionamentos, seja qual for o servidor que gerou o arquivo.

Por que um REFERENCES em linha recebe uma nota?

No MySQL 8 e anteriores, um REFERENCES escrito logo depois de uma coluna é aceito, mas ignorado: nenhuma chave estrangeira é criada. A partir do MySQL 9.0, ela é criada. O diagrama desenha o relacionamento nos dois casos, porque o script o declara, e a nota lembra você de conferir se o banco de dados tem mesmo essa chave.

Posso colar scripts do Workbench ou migrações em vez de um dump?

Sim. Um script gerado por forward engineering no MySQL Workbench, um dump de esquema do Laravel, um structure.sql do Rails ou DDL escrito à mão funcionam. Instruções que alteram tabelas depois, como ALTER TABLE … ADD CONSTRAINT … FOREIGN KEY ou ADD COLUMN, são aplicadas às tabelas que elas nomeiam.

Algo é salvo quando colo um dump do MySQL?

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 e conexões, é salvo como um novo diagrama no seu espaço de trabalho. Mudanças feitas depois no esquema do MySQL não o atualizam.

A ferramenta de diagrama ER para MySQL é 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.