Ferramenta gratuita

SQLite para diagrama ER

Cole o que o sqlite3 imprime com .schema ou .dump e receba um diagrama ER das tabelas, chaves e chaves estrangeiras, inclusive colunas sem tipo. Teste o exemplo de app de notas: cadernos, notas, etiquetas e a tabela que liga as notas às etiquetas.

Resultado de exemplo

Diagrama de exemplo desenhado a partir de um exemplo de SQLite
Experimente um exemploApp de notas

Como funciona

  1. Cole ou solte o esquema

    A saída de .schema ou .dump, um arquivo de migração escrito em SQL ou instruções CREATE TABLE copiadas de qualquer ferramenta do SQLite.

  2. Veja as tabelas e as conexões

    Cada tabela vira um cartão com suas colunas, e cada cláusula REFERENCES vira uma conexão até a tabela que ela referencia, com as chaves estrangeiras ativadas ou não.

  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 de um arquivo SQLite

Rode isto ao lado do arquivo do banco de dados e cole o que ele imprimir:

  1. .schema imprime cada instrução CREATE sem as linhas; .dump imprime o mesmo e mais os dados, que são ignorados. Troque app.db pelo nome do arquivo ou acrescente > schema.sql para salvar a saída e solte esse arquivo.

    sqlite3 app.db .schema

Sintaxe do SQLite em um esquema

O que acontece com cada construção da saída do sqlite3:

INTEGER PRIMARY KEY
Marcado como PK. Essa coluna é o rowid da tabela, e outras tabelas podem apontar para ela com REFERENCES.
AUTOINCREMENT
Lido como parte da chave primária e não aparece. O SQLite escreve sem sublinhado, ao contrário do AUTO_INCREMENT do MySQL.
CREATE TABLE note_tags (note_id, tag_id)
Lido. Uma coluna declarada sem tipo aparece com o nome e sem tipo, e as chaves sobre ela continuam valendo.
WITHOUT ROWID · STRICT
Ignorados como opções de tabela; a tabela, suas colunas e sua chave primária são lidas normalmente.
sqlite_sequence
Oculta. O SQLite cria essa tabela para o AUTOINCREMENT e o .schema a imprime, mas ela não faz parte do desenho do app; um .dump só a preenche com linhas INSERT, que são ignoradas.
CREATE TRIGGER
Ignorados e contados. Os pontos e vírgulas dentro de BEGIN … END são tratados corretamente, então as tabelas depois de um trigger continuam sendo lidas.

O que um diagrama do SQLite deixa de fora

  • Triggers e views. Os corpos são ignorados e contados, então nada do que eles fazem aparece no diagrama.
  • As tabelas internas do SQLite, como sqlite_sequence e sqlite_stat1. Tudo cujo nome começa com sqlite_ fica oculto.
  • Se as chaves estrangeiras são aplicadas ou não. PRAGMA foreign_keys vem desativado por padrão no SQLite, e o diagrama desenha cada REFERENCES declarado, seja qual for essa configuração.
  • O próprio arquivo do banco de dados. Um arquivo .db não pode ser aberto aqui, então tamanho de página, contagens de linhas e linhas gravadas não aparecem; cole o texto de .schema no lugar.

Perguntas sobre SQLite

.schema ou .dump: qual devo usar?

.schema é mais curto porque imprime só as instruções CREATE. .dump acrescenta cada linha como instruções INSERT entre BEGIN TRANSACTION e COMMIT, o que também funciona, já que as linhas são ignoradas. Para imprimir uma só tabela, passe o nome dela para .schema, como em .schema notes.

Por que algumas colunas não têm tipo?

O SQLite permite declarar uma coluna sem tipo, como em CREATE TABLE note_tags (note_id, tag_id). O diagrama mostra essa coluna com o nome e um tipo vazio. Em uma tabela STRICT toda coluna tem tipo, e ele aparece como está escrito.

Por que não há conexões entre as minhas tabelas?

As conexões vêm de cláusulas REFERENCES e de restrições FOREIGN KEY. Muitos apps nunca as declaram e só guardam IDs, e aí não há nada para desenhar. Assim que o esquema as declara, as conexões aparecem, com PRAGMA foreign_keys ligado ou não.

Posso gerar o diagrama do banco SQLite de um app mobile?

Sim. Copie o arquivo do banco de dados do aparelho ou do emulador para o seu computador, rode sqlite3 app.db .schema e cole a saída. O mesmo vale para apps de desktop, apps Electron e bancos de desenvolvimento locais do Django ou do Rails.

Algo é salvo quando colo um esquema?

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 posteriores no arquivo .db não o atualizam.

A ferramenta de diagrama ER para SQLite é gratuita?

Sim. Colar um esquema 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.