Como usar o ViewDB
Escreva o schema do banco em DBML, veja como diagrama e exporte como SQL ou código de ORM. Esta página explica a linguagem e cada parte do app.
Table users { id integer [pk, increment] email varchar(255) [unique, not null]} Table posts { id integer [pk] author_id integer [ref: > users.id] title varchar(200)}Como o ViewDB funciona
Cada projeto é um texto DBML mais a posição das tabelas no diagrama. Você escreve o schema à esquerda, e o ViewDB desenha à direita enquanto você digita.
O texto é a fonte da verdade. Mover uma tabela só guarda onde ela fica. Todo o resto que você muda no diagrama ou na aba Schema volta para o DBML, mexendo só nas linhas que mudaram.
Quando o DBML tem um erro, o diagrama mantém a última versão que funcionou, e a lista abaixo do editor diz o que corrigir.
Salvamento
As mudanças são salvas um segundo depois que você para de digitar, e Ctrl/⌘+S salva na hora. O status na barra de ferramentas mostra a situação:
- Salvo
- Tudo está no servidor.
- Salvando…
- Um salvamento está a caminho.
- Alterações não salvas
- Você digitou desde o último salvamento. Ele sai em instantes.
- Não foi possível salvar
- O salvamento falhou. O ViewDB tenta de novo sozinho; clique no status para tentar agora.
- Mudou em outro lugar
- O projeto foi salvo em outro lugar enquanto você tinha mudanças não salvas. Veja abaixo.
O projeto é salvo mesmo com erros no DBML, então nada do que você está fazendo se perde. Sair da página antes de o salvamento terminar pede confirmação.
Mudanças feitas em outro lugar
A cada poucos segundos, o editor verifica se o projeto foi salvo em outra aba ou por um agente de IA. Se você não tem nada pendente, ele carrega a mudança sem avisar. Se você também estava editando, ele pergunta qual lado manter: Manter as minhas alterações ou Carregar o projeto salvo. O lado descartado fica guardado no histórico de versões.
Primeiros passos
- Na página de projetos, clique em Novo projeto. Comece em branco ou a partir de um dos schemas de exemplo.
- Escreva ou cole DBML na aba DBML. O diagrama acompanha enquanto você digita.
- Arraste as tabelas para onde quiser, ou deixe o Organizar posicionar tudo.
- Clique em Exportar para gerar SQL, código de ORM ou uma imagem, e em Compartilhar para mostrar o diagrama a alguém.
Traga um schema que você já tem
Importar, na página de projetos ou no editor, lê um arquivo .dbml, um projeto .viewdb ou SQL com comandos CREATE TABLE de PostgreSQL, MySQL ou SQL Server. Escolha um arquivo ou cole o texto. Arquivos podem ter até 900 KB.
No editor, a importação também pode substituir o projeto atual. O ViewDB guarda antes uma versão “Antes de importar”, para você poder voltar.
Exemplos, no editor, oferece os mesmos schemas de exemplo: substitua o código atual por um deles ou abra-o como projeto novo.
DBML em cinco minutos
DBML descreve tabelas, colunas e as ligações entre elas em texto simples. Estes cinco passos cobrem a maioria dos schemas.
Uma tabela
Escreva
Table, um nome e as colunas entre chaves. Cada coluna é um nome e um tipo. Qualquer nome de tipo funciona, e o ViewDB o guarda como você escreveu.DBMLTable users { id integer email varchar(255) created_at timestamp}Chaves e regras
As configurações vão entre colchetes depois do tipo:
pkpara a chave primária,increment,unique,not nulledefault. Um default entre crases, como now() aqui, é uma expressão SQL.DBMLTable users { id integer [pk, increment] email varchar(255) [unique, not null] created_at timestamp [default: `now()`]}Uma relação
ref: > users.idnuma coluna diz que muitos posts apontam para um usuário. O diagrama desenha uma linha entre as duas colunas.DBMLTable users { id integer [pk, increment] email varchar(255) [unique, not null]} Table posts { id integer [pk, increment] author_id integer [not null, ref: > users.id] title varchar(200) [not null]}Uma lista de valores
Enumdefine os valores que uma coluna pode ter. Use o nome do enum como tipo da coluna.DBMLEnum post_status { draft published archived} Table posts { id integer [pk, increment] author_id integer [not null, ref: > users.id] status post_status [default: 'draft']} Table users { id integer [pk, increment]}Grupos e notas
TableGroupdesenha uma moldura em volta de tabelas relacionadas. UmaNotefora de qualquer tabela vira uma nota adesiva no diagrama.DBMLTable users { id integer [pk]} Table posts { id integer [pk] author_id integer [ref: > users.id]} TableGroup blog [color: #0f766e] { users posts} Note publishing { 'Posts are visible once status is published.'}
Isso basta para a maioria dos apps. A referência abaixo tem todas as opções.
Referência DBML
Tudo o que o ViewDB lê, com um exemplo para cada parte.
Tabelas e colunas
Uma tabela pode ficar num schema (billing.invoices; sem schema, ela vai para public), ter um apelido curto com as, uma headercolor e uma note. Cada linha dentro dela é uma coluna: o nome, o tipo e depois as configurações entre colchetes.
Table billing.invoices as I [headercolor: #2563eb, note: 'One per order'] { id uuid [pk, default: `gen_random_uuid()`] number varchar(20) [unique, not null, note: 'Shown to the customer'] total decimal(10,2) [not null, default: 0] paid boolean [default: false] tags text[] currency char(3) [default: 'USD']}pkouprimary key- A chave primária. Para uma chave com várias colunas, use Indexes.
increment- O número aumenta sozinho.
unique- Duas linhas não podem ter o mesmo valor.
not null/null- Se a coluna pode ficar vazia.
default: …- Um número,
'texto',trueoufalse, ou uma expressão SQL entre crases. note: '…'- Um comentário sobre a coluna. As exportações SQL o mantêm como comentário.
ref: > tabela.coluna- Uma relação escrita na própria coluna.
Os tipos ficam como foram escritos, então varchar(255), decimal(10,2), text[] e nomes de enum funcionam. As exportações traduzem os tipos comuns para cada banco.
Índices
Um bloco Indexes no fim da tabela lista índices de uma ou mais colunas. Cada um pode ser pk (uma chave primária com várias colunas), unique e ter um name.
Table order_items { order_id integer product_id integer sku varchar(40) Indexes { (order_id, product_id) [pk] sku [unique, name: 'order_items_sku_key'] }}Relações
Escreva a relação na coluna, ou numa linha própria começando com Ref, que também aceita um nome e ações. O símbolo diz quantas linhas há de cada lado:
>- Muitos para um: muitos pedidos, um usuário.
<é o mesmo, escrito ao contrário. -- Um para um.
<>- Muitos para muitos. As exportações criam a tabela de junção para você.
Table users { id integer [pk]} Table profiles { user_id integer [pk, ref: - users.id]} Table orders { id integer [pk] user_id integer} Table products { id integer [pk]} Table tags { id integer [pk]} Ref orders_user: orders.user_id > users.id [delete: cascade, update: no action]Ref: products.id <> tags.iddelete e update aceitam cascade, restrict, set null, set default ou no action. Duas relações entre as mesmas colunas são um erro.
Para uma chave com várias colunas, liste-as entre parênteses dos dois lados. Relações assim só podem ser alteradas no código.
Table orders { region varchar(2) number integer Indexes { (region, number) [pk] }} Table shipments { id integer [pk] order_region varchar(2) order_number integer} Ref: shipments.(order_region, order_number) > orders.(region, number)Enums
Um enum lista os valores que uma coluna pode ter, um por linha. Coloque aspas em valores com espaço. Enums também podem ficar num schema: use o nome completo como tipo da coluna.
Enum billing.payment_method { card pix "bank transfer"} Table billing.payments { id integer [pk] method billing.payment_method [not null]}Grupos e notas adesivas
TableGroup lista as tabelas que ficam juntas numa moldura, com color e note opcionais. Uma tabela pertence a no máximo um grupo. Uma Note com nome, fora de qualquer tabela, vira uma nota adesiva; color: none deixa a nota sem preenchimento. Três aspas (''') guardam texto de várias linhas.
Table customers { id integer [pk]} Table orders { id integer [pk] customer_id integer [ref: > customers.id]} TableGroup sales [color: #c2410c, note: 'Owned by the sales team'] { customers orders} Note release_plan [color: #F4D03F] { ''' Orders ship in v2. Customers already exist. '''}Comentários
// transforma o resto da linha em comentário, e /* */ um bloco inteiro. Ctrl/⌘+/ comenta as linhas selecionadas.
// A line comment/* A block comment over two lines */Table audit_log { id bigint [pk] // after a column too payload json}Limites
- O DBML de um projeto pode ter até 500.000 caracteres.
- Nomes de projeto podem ter até 120 caracteres.
- Nomes digitados na aba Schema não podem ter aspas duplas.
Aceito, mas não desenhado
Estas partes do DBML são lidas sem erro, mas não aparecem no diagrama nem nas exportações:
Project- O nome do projeto, o tipo de banco e a nota.
Records- Linhas de exemplo.
checksecheck:- Restrições de verificação. Ficam no código como foram escritas.
typedo índice- Como
type: hash. O índice em si é mantido. - Notas em valores de enum
- Os valores são mantidos, as notas não.
TablePartial funciona: as colunas dele entram em cada tabela que o usa com ~nome.
Lendo um erro
Quando o DBML não pode ser lido, a barra de ferramentas conta os problemas e a lista abaixo do editor diz onde estão, como em “Line 3: Expect an identifier”. Clique numa linha para ir até ela.
Table users { id integer [pk}] na linha 2, e o erro aponta para a linha 3.Escrevendo no editor
- Problemas
- O indicador na barra de ferramentas mostra Sem erros ou quantos problemas existem. Clique nele para ir ao primeiro.
- Buscar e editar
- Ctrl/⌘+F busca e substitui, Ctrl/⌘+Z desfaz, Ctrl/⌘+/ comenta linhas e Tab indenta. Colchetes e aspas fecham sozinhos.
- Código e diagrama juntos
- Mover o cursor para dentro de uma tabela, grupo ou nota seleciona o item no diagrama. Clicar nele no diagrama mostra o código ou o formulário dele.
- O painel
- Ctrl/⌘+B esconde ou mostra o editor. Arraste o divisor para mudar o tamanho, ou dê foco a ele e use as setas. Cada painel tem a própria chave de claro e escuro.
- No celular
- O editor, o diagrama e o assistente são vistas separadas. Troque entre elas pelas abas acima.
Trabalhando no diagrama
O diagrama é desenhado a partir do DBML, e quase tudo o que você faz nele volta para o código.
- Navegar
- Arraste o fundo para mover a vista, e role ou faça pinça para dar zoom, de 20% a 250%. Clique na porcentagem para voltar a 100%, ou em Ajustar para ver tudo.
- Selecionar
- Clique numa tabela para selecioná-la. Shift+clique adiciona tabelas à seleção, e Shift+arrastar desenha uma caixa em volta de várias.
- Adicionar
- Adicionar tabela, Adicionar grupo e Adicionar nota criam os itens na hora; Adicionar grupo coloca as tabelas selecionadas no grupo novo. Dê um duplo clique num espaço vazio para criar uma nota adesiva ali. Esses botões esperam enquanto o DBML tem erros.
- Alterar
- Arraste uma tabela para dentro ou para fora da moldura de um grupo para mudar o grupo dela. Arraste a borda direita para mudar a largura. Dê um duplo clique numa tabela, grupo ou relação para editar na aba Schema.
- Ligar
- Passe o mouse sobre uma coluna e um ponto aparece à direita dela. Arraste esse ponto até outra coluna para criar uma relação.
- Cor
- O botão de cor no cabeçalho de uma tabela, grupo ou nota escolhe uma cor pronta ou qualquer outra. Ele escreve
headercoloroucolorno código. - Ler as linhas
- A legenda no canto mostra como a linha termina: uma barra para um, um garfo para muitos. Passar o mouse sobre uma tabela apaga as que não se ligam a ela.
Organizar
Organizar posiciona todas as tabelas de uma vez. Com o menu aberto, as teclas 1 a 4 escolhem uma opção. Um projeto sem posições salvas é organizado na primeira vez que você o abre.
- Esquerda para direita
- Tabelas referenciadas à esquerda, seguindo as relações.
- Cima para baixo
- Tabelas referenciadas no topo, seguindo as relações.
- Floco de nevePro
- As tabelas mais conectadas no centro, as relacionadas em volta.
- CompactoPro
- Tabelas agrupadas em linhas, o mais junto possível, sem seguir as relações.
Editando sem código
A aba Schema, ao lado de DBML, tem formulários para Tabelas, Refs, Enums, Grupos e Notas. Cada mudança reescreve só as linhas que afeta, então sua formatação e seus comentários continuam no lugar.
- Tabelas
- Nome, apelido, nota, cor, grupo e colunas, com tipo, chave primária, not null, unique, auto-incremento, default e nota. Mova ou remova colunas, ou exclua a tabela junto com as relações dela.
- Refs
- As duas pontas, o tipo e as ações ao excluir e ao atualizar. Uma relação escrita numa coluna vira uma linha
Refquando você salva. - Enums
- Adicione, renomeie e remova valores, e veja quais colunas usam o enum.
- Grupos e Notas
- Nome, cor, nota e tabelas de cada grupo; texto e cor de cada nota adesiva.
Enquanto o DBML tem erros, os formulários mostram a última versão válida e não podem ser alterados. Corrija o código primeiro.
Exportando
Exportar transforma o schema atual em código ou imagem. Use Copiar para o código ou Baixar para salvar como arquivo.
- PostgreSQL, MySQL, SQLite
- Scripts
CREATE TABLEcom chaves, índices, enums e comentários. - Prisma
- Um
schema.prismapara PostgreSQL, MySQL ou SQLite. - Drizzle
- Um
schema.tspara PostgreSQL, MySQL ou SQLite. - DBML
- O código exatamente como foi escrito, com erros e tudo.
- ViewDB
- Um arquivo
.viewdbcom o nome, o DBML e as posições do diagrama. Importar abre ele de novo.
As exportações de código precisam de um DBML sem erros.
Imagens
PNG e SVG salvam o diagrama como ele está agora, com o dobro da resolução da tela.
- PNG
- No Starter, o PNG tem um pequeno logo do ViewDB no canto.
- PNGPro
- PNG sem o logo.
- SVGPro
- Um arquivo vetorial que fica nítido em qualquer tamanho.
Histórico de versõesPro
Histórico lista estados anteriores do projeto. Pré-visualize qualquer um, compare com o atual e traga de volta.
- Guardadas para você
- Enquanto você edita, o ViewDB guarda uma versão a cada 10 minutos, no máximo. Ele também guarda uma antes de uma importação, de um exemplo, de uma restauração, da edição de um agente ou de uma mudança do assistente.
- Versões com nome
- Salvar versão guarda o estado atual com um nome. Versões com nome nunca são removidas automaticamente; das outras, ficam as 100 mais recentes.
- Pré-visualizar e comparar
- Abra uma versão para ver o diagrama dela e como o DBML difere do atual ou da versão anterior. O editor fica só leitura enquanto você olha.
- Restaurar
- Restaurar traz a versão de volta. O estado que você deixa é guardado antes, e Desfazer na mensagem desfaz a restauração.
- Mais
- Renomeie ou exclua uma versão, use Duplicar como projeto ou baixe como
.viewdb.
No Starter, as versões continuam sendo gravadas e aparecem quando você passa para o Pro.
Assistente de IAPro
Assistente abre uma conversa sobre o projeto em que você está. Ele lê o DBML atual e só fala deste schema.
- Perguntar
- Pergunte para que serve uma tabela, como modelar algo ou o que está errado. As sugestões ajudam a começar: “Explique este schema”, “Sugira melhorias para este modelo”, “Corrija os erros do DBML”.
- Revisar mudanças
- Peça uma mudança e a resposta vem como proposta. Ver mudanças lista as diferenças, e Aplicar as escreve no editor. Uma versão é guardada antes, e Ctrl/⌘+Z desfaz.
- Mensagens
- O assistente que vem com o ViewDB responde 20 mensagens por mês durante o teste e 200 no Pro.
- Sua própria chave
- Em Conta → Assistente de IA, adicione uma chave do Google Gemini, da OpenAI ou da Anthropic e escolha o modelo. A sua chave não tem limite mensal; o provedor cobra o uso de você.
- A conversa
- Ela dura enquanto o editor está aberto. Nova conversa começa do zero.
Conectando agentes de IAPro
Agentes como Claude e Cursor podem ler e editar seus projetos por MCP. Você aprova cada conexão, e cada mudança que eles fazem fica no histórico de versões como “Antes da edição do agente”.
Apps que se conectam
- Claude (web e desktop)
- Adicione o ViewDB como conector personalizado.
- Claude Code
- Adicione com um comando no terminal.
- Cursor
- Adicione no
mcp.json. - Claude Desktop com chave
- Instale o arquivo
.mcpbe cole uma chave de API em vez de entrar com a conta.
O que um agente pode fazer
- Listar seus projetos e ler o DBML e as versões deles.
- Exportar um schema como SQL ou código de ORM.
- Criar e renomear projetos, e mudar o schema deles.
- Mostrar o diagrama dentro da conversa.
Chaves de API podem só ler, ou ler e editar. Revogue uma chave ou desconecte um app na mesma página.
Conta e planos
- Perfil
- Seu nome. A foto vem do GitHub ou do Google.
- Preferências
- O idioma do app e dos emails. Ele também está no menu da conta.
- Segurança
- Senha, entrada com GitHub e Google, e onde você está conectado.
- Plano e cobrança
- Seu plano, a data de renovação e o portal do Stripe para faturas e mudanças de plano.
- Excluir conta
- Apaga a conta e os projetos dela, e cancela a assinatura na hora.
O botão de sol e lua no topo alterna entre claro e escuro.
Planos
Toda conta pode começar com 3 dias de Pro, grátis, com um projeto. Depois, escolha Starter ou Pro.
- Teste
- Tudo do Pro, com um projeto e 20 mensagens do assistente.
- Starter
- Até 10 projetos, todas as exportações de código, PNG com o logo, dois layouts e compartilhamento.
- Pro
- Projetos ilimitados, PNG sem o logo e SVG, todos os layouts, histórico de versões, o assistente, agentes, e senha e validade nos links.
- Só leitura
- Quando o teste ou a assinatura termina, você ainda abre seus projetos, baixa o DBML e o
.viewdbdeles e pode excluí-los. Os links compartilhados continuam funcionando.
Atalhos de teclado
| Teclas | O que faz |
|---|---|
| Ctrl/⌘+S | Salvar agora |
| Ctrl/⌘+B | Esconder ou mostrar o editor |
| Ctrl/⌘+F | Buscar e substituir no código |
| Ctrl/⌘+Z Ctrl/⌘+Shift+Z | Desfazer e refazer |
| Ctrl/⌘+/ | Comentar linhas |
| 1–4 | Escolher um layout, com o menu Organizar aberto |
| Shift+clique | Adicionar uma tabela à seleção |
| Shift+arrastar | Selecionar tabelas com uma caixa |
| Duplo clique | No fundo, criar uma nota adesiva |
| Esc | Parar de editar uma nota, ou desfazer um nome sendo digitado |
| ← → | Mudar o tamanho dos painéis, com o divisor em foco |
| Enter Shift+Enter | Enviar uma mensagem ao assistente, ou adicionar uma linha |