Diagrama entidade-relação
Desenhe esquemas de base de dados que fazem sentido
O que é um Diagrama entidade-relação?
Um diagrama ER mostra as entidades de uma base de dados, os seus atributos e a cardinalidade das relações entre elas (um-para-muitos, muitos-para-muitos). É a planta de qualquer base de dados relacional.
O diagrama entidade-relação pertence ao pull request que acrescenta uma migração e à primeira hora de onboarding, onde a forma mais rápida de explicar um produto é muitas vezes o seu modelo de dados. Torna a cardinalidade explícita: um ou vários endereços por cliente é uma regra de negócio, não um detalhe. O que não transporta é o desenho físico — sem índices, sem partições, sem padrões de consulta. O ficheiro de migração continua a ser a fonte de verdade.
Exemplo em tempo real
erDiagram
CUSTOMER ||--o{ ORDER : places
ORDER ||--|{ ORDER_LINE : contains
PRODUCT ||--o{ ORDER_LINE : "ordered in"
CUSTOMER {
string id PK
string email UK
}
ORDER {
string id PK
date created_at
}Quando usar
Erros frequentes
Cardinalidade lida do lado errado
Em CUSTOMER ||--o{ ORDER : places, o || junto a CUSTOMER significa um cliente por encomenda, e o o{ junto a ORDER significa zero ou mais encomendas por cliente. Cada marcador conta a sua própria entidade, vista da outra ponta.
Uma relação sem rótulo
CUSTOMER ||--o{ ORDER sozinho é um erro de análise: o Mermaid espera dois pontos. Escreva : places, ou : "" quando a relação é evidente. É de longe a falha mais comum num erDiagram.
Nomes de entidade com espaços
ORDER LINE ||--o{ PRODUCT não cria uma entidade chamada ORDER LINE — o nome é partido no espaço. Ponha-o entre aspas, "ORDER LINE", ou use a convenção de sublinhado que o resto do esquema já segue.
Sintaxe básica
erDiagram
USER ||--o{ POST : writes
USER {
string id PK
string email
}CUSTOMER ||--o{ ORDER : placesToda a relação precisa de um rótulo a seguir aos dois pontos; escreva : "" quando não há nada de útil a dizer. Ponha entre aspas os rótulos com espaços, como em : "ordered in".
ORDER { string id PK decimal total "in cents" }Os atributos são tipo, depois nome, depois marcadores de chave opcionais (PK, FK, UK, separados por vírgulas) e um comentário entre aspas. Os tipos são texto livre e nada é validado.
ORDER ||--|{ LINE : contains CUSTOMER }o..o{ PROMO : usesUma linha contínua é uma relação identificadora — o filho não pode existir sozinho. Os pontos marcam uma relação não identificadora, em que a chave estrangeira é opcional.
erDiagram direction LRA direção predefinida é de cima para baixo. direction LR estende um esquema largo na horizontal, o que costuma encaixar melhor numa página de documentação do que uma coluna alta de entidades.
Perguntas sobre este diagrama
Como leio os símbolos de cardinalidade como ||--o{ ?
|| significa exatamente um, o| zero ou um, }| um ou mais, }o zero ou mais. Assim, CUSTOMER ||--o{ ORDER lê-se «um cliente faz zero ou mais encomendas».
Posso gerar um diagrama ER a partir de SQL?
Sim — cole as suas instruções CREATE TABLE ou descreva os seus dados e a IA produz o diagrama ER correspondente com chaves e relações.
Posso manter um diagrama entidade-relação sob controlo de versões com as minhas migrações?
Sim, e é essa a principal razão para o escrever em texto. O diagrama fica ao lado da migração, aparece linha a linha no diff da revisão, e uma alteração de esquema que ninguém refletiu nele salta à vista como uma edição em falta.
Um diagrama entidade-relação Mermaid mostra índices e restrições?
Não. Mostra entidades, tipos de atributo e marcadores PK, FK ou UK, e mais nada: nem índices, nem valores predefinidos, nem restrições check, nem triggers. Trate-o como um mapa do esquema, não como uma especificação a partir da qual geraria uma base de dados.
Como modelo uma relação muitos-para-muitos?
Ou a desenha diretamente com }o--o{, ou modela a entidade de junção explicitamente: STUDENT ||--o{ ENROLMENT e COURSE ||--o{ ENROLMENT. Use a segunda forma assim que a junção passa a ter colunas próprias, como uma data de inscrição.
Qual é a diferença entre PK, FK e UK?
PK marca a chave primária, FK uma chave estrangeira que aponta para outra entidade e UK uma restrição de unicidade. O Mermaid apresenta-os apenas como rótulos — nunca verifica se uma FK corresponde a uma chave primária noutro ponto do diagrama.
Diagrama entidade-relação ou outro tipo de diagrama?
Diagrama entidade-relação ou diagrama de classes?
Escolha pelo que o leitor vai fazer a seguir. Se vai escrever SQL ou uma migração, dê-lhe entidades, chaves e cardinalidades. Se vai escrever código de aplicação, um diagrama de classes com métodos e herança está mais perto do que ele vai efetivamente teclar.
Diagrama entidade-relação ou fluxograma?
O diagrama entidade-relação responde a «o que é guardado e como se relaciona»; o fluxograma responde a «o que acontece e por que ordem». Caixas que são substantivos com atributos pertencem a um diagrama entidade-relação; caixas que são verbos pertencem a um fluxograma.
Crie já o seu Diagrama entidade-relação
Descreva-o em linguagem natural — a IA escreve o código Mermaid por si.
Abrir o Mermaid Studio