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
Como funciona
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.
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.
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:
.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.