Diagrama entidad-relación
Diseña esquemas de base de datos con sentido
¿Qué es un Diagrama entidad-relación?
Un diagrama ER muestra las entidades de una base de datos, sus atributos y la cardinalidad de las relaciones entre ellas (uno a muchos, muchos a muchos). Es el plano de toda base de datos relacional.
Los diagramas entidad-relación pertenecen al pull request que añade una migración y a la primera hora del onboarding, donde la forma más rápida de explicar un producto suele ser su modelo de datos. Hacen explícita la cardinalidad: que un cliente tenga una dirección o varias es una regla de negocio, no un detalle. Lo que no recogen es el diseño físico — ni índices, ni particionado, ni patrones de consulta. El fichero de migración sigue siendo la fuente de verdad.
Ejemplo en directo
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
}Cuándo usarlo
Errores frecuentes
Cardinalidad leída del lado equivocado
En CUSTOMER ||--o{ ORDER : places, el || junto a CUSTOMER significa un cliente por pedido, y el o{ junto a ORDER, cero o más pedidos por cliente. Cada marcador cuenta su propia entidad vista desde el otro extremo.
Una relación sin etiqueta
CUSTOMER ||--o{ ORDER a secas es un error de análisis: Mermaid espera los dos puntos. Escribe : places, o : "" cuando la relación sea evidente. Es con diferencia el fallo más frecuente en erDiagram.
Nombres de entidad con espacios
ORDER LINE ||--o{ PRODUCT no crea una entidad llamada ORDER LINE: el nombre se parte en el espacio. Entrecomíllalo como "ORDER LINE", o usa el guion bajo que ya sigue el resto del esquema.
Sintaxis básica
erDiagram
USER ||--o{ POST : writes
USER {
string id PK
string email
}CUSTOMER ||--o{ ORDER : placesToda relación necesita una etiqueta tras los dos puntos; escribe : "" cuando no haya nada útil que decir. Entrecomilla las etiquetas con espacios, como en : "ordered in".
ORDER { string id PK decimal total "in cents" }Los atributos son tipo y luego nombre, después marcadores de clave opcionales (PK, FK, UK, separados por comas) y un comentario entrecomillado. Los tipos son texto libre y no se valida nada.
ORDER ||--|{ LINE : contains CUSTOMER }o..o{ PROMO : usesUna línea continua es una relación identificadora: el hijo no puede existir solo. Los puntos marcan una no identificadora, en la que la clave foránea es opcional.
erDiagram direction LRLa dirección por defecto es de arriba abajo. direction LR despliega en horizontal un esquema ancho, lo que suele encajar mejor en una página de documentación que una columna alta de entidades.
Preguntas sobre este diagrama
¿Cómo se leen los símbolos de cardinalidad como ||--o{ ?
|| significa exactamente uno, o| cero o uno, }| uno o más, }o cero o más. Así, CUSTOMER ||--o{ ORDER se lee «un cliente realiza cero o más pedidos».
¿Puedo generar un diagrama ER a partir de SQL?
Sí — pega tus sentencias CREATE TABLE o describe tus datos y la IA produce el diagrama ER correspondiente con claves y relaciones.
¿Puedo versionar un diagrama entidad-relación junto a mis migraciones?
Sí, y esa es la razón principal para escribirlo como texto. El diagrama vive junto a la migración, se compara línea a línea en la revisión y un cambio de esquema que nadie reflejó aparece como una edición que falta.
¿Puede un diagrama ER de Mermaid mostrar índices y restricciones?
No. Muestra entidades, tipos de atributo y marcadores PK, FK o UK, y nada más: ni índices, ni valores por defecto, ni restricciones CHECK, ni triggers. Tómalo como un mapa del esquema, no como una especificación a partir de la cual generar una base de datos.
¿Cómo modelo una relación de muchos a muchos?
O la dibujas directamente con }o--o{, o modelas de forma explícita la entidad intermedia: STUDENT ||--o{ ENROLMENT y COURSE ||--o{ ENROLMENT. Usa la segunda forma en cuanto la unión lleve columnas propias, como una fecha de matrícula.
¿Cuál es la diferencia entre PK, FK y UK?
PK marca la clave primaria, FK una clave foránea que apunta a otra entidad y UK una restricción de unicidad. Mermaid solo las dibuja como etiquetas: nunca comprueba que una FK corresponda a una clave primaria del diagrama.
¿Diagrama entidad-relación u otro tipo de diagrama?
¿Diagrama entidad-relación o diagrama de clases?
Elige según lo que vaya a hacer quien lee. Si va a escribir SQL o una migración, dale entidades, claves y cardinalidades. Si va a escribir código de aplicación, un diagrama de clases con métodos y herencia se parece más a lo que va a teclear.
¿Diagrama entidad-relación o diagrama de flujo?
El diagrama entidad-relación responde a «qué se almacena y cómo se relaciona»; el diagrama de flujo, a «qué ocurre y en qué orden». Las cajas que son sustantivos con atributos van en el primero; las que son verbos, en el segundo.
Crea tu Diagrama entidad-relación ahora
Descríbelo en lenguaje natural — la IA escribe el código Mermaid por ti.
Abrir Mermaid Studio