¿Qué es un diagrama de entidad-relación (ERD)?
Un Diagrama de entidad-relación (ERD) es un plano estructural utilizado para diseñar, documentar y analizar esquemas de bases de datos relacionales. Describe las tablas de datos específicas (entidades) dentro de una aplicación, las columnas (atributos) anidadas dentro de esas tablas, y las reglas de integridad referencial que las unen. Escrito utilizando la notación estándar notación de Ingeniería de Información (IE), implementa claras notación de pie de cuervo de cabeza para mostrar restricciones de datos y dependencias entre múltiples tablas.
Con Mermaid.js, puedes definir los índices de tablas de producción, los tipos de datos y las conexiones de claves foráneas utilizando un bloque de texto limpio y declarativo. El motor maneja automáticamente el tamaño para contenedores de diseño de múltiples columnas y enruta las líneas de conexión sin que las etiquetas de texto se solapen.
Guía de sintaxis principal: Elementos y construcciones
Construir un esquema de base de datos válido y completamente ejecutable en Mermaid depende de bloques de entidades estructurales, asignaciones de tipos de datos, etiquetas de índices y operadores de cardinalidad.
1. Declaración de entidades y columnas de tabla
Inicializas una superficie de ERD en la primera línea utilizando la palabra clave erDiagram palabra clave. Para definir una tabla, escribe el nombre de la entidad seguido de una llave abierta, enumerando tus configuraciones de columnas de forma secuencial en líneas individuales:
erDiagram
USERS {
int id
string email
timestamp created_at
} 
2. Marcado de claves primarias, claves foráneas y comentarios
El motor de ERD de Mermaid te permite asignar etiquetas de indexación estructural directamente después del nombre de la columna y la definición de tipo de datos. También puedes agregar un comentario de texto opcional a una columna envolviéndolo entre comillas dobles:
PK— Marca explícitamente una columna como clave primaria de la tabla.FK— Marca una columna como clave foránea vinculada a una tabla padre.
erDiagram
ORDERS {
int id PK
int user_id FK "Enlaza con USERS.id"
string codigo_cupón
} 
3. Dominar los modificadores de cardinalidad de pata de cuervo
Para conectar tablas y aplicar reglas de integridad referencial, mapee sus relaciones utilizando operadores de línea especializados. Las cabezas de carácter forman formas visuales de pata de cuervo que determinan las restricciones de multiplicidad de datos:
||--||**Exactamente uno a exactamente uno:** Un mapeo estricto y obligatorio 1:1.||--o|**Exactamente uno a cero o uno:** Una dependencia opcional 1:1.||--|{**Exactamente uno a uno o muchos:** Un enlace parental obligatorio 1:N.||--o{**Exactamente uno a cero, uno o muchos:** Una relación estándar y opcional 1:N.

Mejores prácticas para esquemas de datos relacionales
- Mantenga una escritura consistente en las tablas: Mantenga los nombres de entidades predecibles. Use cadenas en mayúsculas (por ejemplo,
CUENTAS_DE_USUARIO) o snake_case en minúsculas estrictas (por ejemplo,cuentas_de_usuario) para coincidir con el código de infraestructura SQL de su mundo real. - Incluya siempre los tipos de datos: Evite declarar texto de columna sin tipos. Enumere explícitamente definiciones como
int,varchar, obooleanoasegura que tus diagramas de arquitectura sirvan como una referencia técnica precisa. - Mantén las etiquetas de relación como verbos: Al vincular elementos, proporciona una breve cadena de verbo en minúsculas dentro de tu asignación de relación (por ejemplo,
||--o{ : "contiene") para documentar el mapeo de lógica de negocio.
Ejemplos reales de ERD con Mermaid.js
Ejemplo 1: Modelo transaccional central de comercio electrónico (Claves y mapeos)
Este plano funcional modela un bucle transaccional central de base de datos de comercio electrónico, mostrando cómo los usuarios, pedidos y sistemas de seguimiento de pagos se vinculan entre sí utilizando restricciones estrictas de pie de cuervo.
erDiagram
CLIENTES {
int id PK
string email
string password_hash
}
PEDIDOS {
int id PK
int customer_id FK
decimal total_amount
string status
}
LIBROS_DE_TRANSACCIONES {
int id PK
int order_id FK
string reference_token
string gateway
}
CLIENTES ||--o{ PEDIDOS : "coloca"
PEDIDOS ||--|| LIBROS_DE_TRANSACCIONES : "genera" 
Desglose de sintaxis: Este esquema mapea limpiamente los límites de transacción. Las reglas de mapeo indican que un cliente puede colocar cero o muchos pedidos con el tiempo (||--o{), mientras que un registro de pedido individual debe generar exactamente una entrada de libro de transacciones coincidente (||--||).
Ejemplo 2: Esquema del sistema de gestión de contenido empresarial (Intersección muchos a muchos)
Este plano avanzado de base de datos describe la arquitectura de una plataforma de gestión de contenido. Detalla cómo resolver configuraciones complejas muchos a muchos mediante la introducción de una entidad de mapeo puente explícita.
erDiagram
PUBLICACIONES {
int id PK
string title
string slug
text body_content
}
CATEGORÍAS {
int id PK
string name
string description
}
ASIGNACIONES_DE_PUBLICACIONES_CATEGORÍAS {
int post_id PK, FK
int category_id PK, FK
timestamp assigned_at
}
COMENTARIOS {
int id PK
int post_id FK
string author_name
text comment_body
}
PUBLICACIONES ||--o{ ASIGNACIONES_DE_PUBLICACIONES_CATEGORÍAS : "contiene"
CATEGORÍAS ||--o{ ASIGNACIONES_DE_PUBLICACIONES_CATEGORÍAS : "clasifica"
PUBLICACIONES ||--o{ COMENTARIOS : "adjunta" 
Desglose de sintaxis: Para manejar la relación muchos a muchos entre `PUBLICACIONES` y `CATEGORÍAS`, el script introduce una tabla de intersección (`ASIGNACIONES_DE_PUBLICACIONES_CATEGORÍAS`). Esta caja de mapeo utiliza claves compuestas que actúan simultáneamente como claves primarias y foráneas (PK FK), vinculando los nodos externos entre sí utilizando conexiones estándar de uno a muchos con forma de pie de cuervo.