O que é um Diagrama de Relacionamento de Entidades (ERD)?
Um Diagrama de Relacionamento de Entidades (ERD) é um plano estrutural usado para projetar, documentar e analisar esquemas de bancos de dados relacionais. Ele define as tabelas de dados específicas (entidades) dentro de um aplicativo, as colunas (atributos) contidas nessas tabelas e as regras de integridade referencial que as unem. Escrito usando a notação padrão notação de Engenharia de Informação (IE), ela implementa claramente notação de pé de corvo cabeças para mostrar restrições de dados e dependências entre múltiplas tabelas.
Com Mermaid.js, você pode definir seus índices de tabelas de produção, tipos de dados e conexões de chaves estrangeiras usando um bloco de texto limpo e declarativo. O motor manipula automaticamente o dimensionamento para contêineres de layout com múltiplas colunas e roteia as linhas de conexão sem permitir sobreposição de rótulos de texto.
Guia de Sintaxe Principal: Elementos e Construções
Criar um esquema de banco de dados válido e totalmente executável no Mermaid depende de blocos estruturais de entidades, mapeamentos de tipos de dados, rótulos de índices e operadores de cardinalidade.
1. Declarando Entidades e Colunas de Tabelas
Você inicializa uma tela ERD na primeira linha usando a palavra-chave erDiagram palavra-chave. Para definir uma tabela, escreva o nome da entidade seguido por uma chave aberta, listando suas configurações de coluna sequencialmente em linhas individuais:
erDiagram
USERS {
int id
string email
timestamp created_at
} 
2. Marcando Chaves Primárias, Chaves Estrangeiras e Comentários
O motor ERD do Mermaid permite que você atribua rótulos de indexação estrutural diretamente após a definição do nome da coluna e do tipo de dado. Também é possível adicionar um comentário opcional a uma coluna envolvendo-o entre aspas duplas:
PK— Marca explicitamente uma coluna como Chave Primária da tabela.FK— Marca uma coluna como Chave Estrangeira vinculada a uma tabela pai.
erDiagram
ORDERS {
int id PK
int user_id FK "Vincula a USERS.id"
string coupon_code
} 
3. Dominando os modificadores de cardinalidade em formato de pé de corvo
Para conectar tabelas e aplicar regras de integridade referencial, mapeie suas relações usando operadores de linha especializados. As cabeças de caracteres formam formas visuais em formato de pé de corvo que definem as restrições de multiplicidade de dados:
||--||**Exatamente Um para Exatamente Um:** Um mapeamento rígido e obrigatório 1:1.||--o|**Exatamente Um para Zero ou Um:** Uma dependência opcional 1:1.||--|{**Exatamente Um para Um ou Muitos:** Uma ligação parental obrigatória 1:N.||--o{**Exatamente Um para Zero, Um ou Muitos:** Uma relação padrão e opcional 1:N.

Melhores Práticas para Esquemas de Dados Relacionais
- Mantenha a capitalização consistente nas tabelas: Mantenha os nomes das entidades previsíveis. Use strings em maiúsculas (por exemplo,
USER_ACCOUNTS) ou snake_case em minúsculas estritas (por exemplo,user_accounts) para corresponder ao código da sua infraestrutura SQL do mundo real. - Sempre inclua os tipos de dados: Evite declarar texto de coluna bruto sem tipos. Liste explicitamente definições como
int,varchar, oubooleangarante que seus diagramas de arquitetura sirvam como uma referência técnica precisa. - Mantenha os rótulos de relacionamento como verbos: Ao vincular elementos, forneça uma breve string de verbo ativo em minúsculas dentro da sua atribuição de relacionamento (por exemplo,
||--o{ : "contém") para documentar o mapeamento da lógica de negócios.
Exemplos Reais de ERD com Mermaid.js
Exemplo 1: Modelo Transacional Central de Comércio Eletrônico (Chaves e Mapeamentos)
Este modelo funcional representa um ciclo de transação central de banco de dados de comércio eletrônico, mostrando como usuários, pedidos e sistemas de rastreamento de pagamentos se conectam usando restrições estritas de pés de corvo.
erDiagram
CLIENTES {
int id PK
string email
string hash_senha
}
PEDIDOS {
int id PK
int cliente_id FK
decimal valor_total
string status
}
LANÇAMENTOS_TRANSACOES {
int id PK
int pedido_id FK
string token_referencia
string gateway
}
CLIENTES ||--o{ PEDIDOS : "coloca"
PEDIDOS ||--|| LANÇAMENTOS_TRANSACOES : "gera" 
Análise de Sintaxe: Este esquema mapeia limites de transação de forma clara. As regras de mapeamento indicam que um cliente pode colocar zero ou muitos pedidos ao longo do tempo (||--o{), enquanto um registro individual de pedido deve gerar exatamente uma entrada correspondente no lançamento de transação (||--||).
Exemplo 2: Esquema de Sistema de Gestão de Conteúdo Empresarial (Interseção Muitos para Muitos)
Este modelo avançado de banco de dados mapeia a arquitetura de uma plataforma de gestão de conteúdo. Detalha como resolver configurações complexas de muitos para muitos introduzindo uma entidade de mapeamento ponte explícita.
erDiagram
POSTAGENS {
int id PK
string titulo
string slug
text conteudo_corpo
}
CATEGORIAS {
int id PK
string nome
string descricao
}
MAPPINGS_POSTAGENS_CATEGORIAS {
int postagem_id PK, FK
int categoria_id PK, FK
timestamp atribuido_em
}
COMENTARIOS {
int id PK
int postagem_id FK
string nome_autor
text corpo_comentario
}
POSTAGENS ||--o{ MAPPINGS_POSTAGENS_CATEGORIAS : "contém"
CATEGORIAS ||--o{ MAPPINGS_POSTAGENS_CATEGORIAS : "classifica"
POSTAGENS ||--o{ COMENTARIOS : "anexa" 
Análise de Sintaxe: Para lidar com a relação muitos para muitos entre `POSTAGENS` e `CATEGORIAS`, o script introduz uma tabela de interseção (`MAPPINGS_POSTAGENS_CATEGORIAS`). Esta caixa de mapeamento usa chaves compostas que atuam simultaneamente como chaves primárias e estrangeiras (PK FK), conectando os nós externos usando conexões padrão de um para muitos com pés de corvo.