Diagrama entidad-relación
Entidades de un dominio y sus relaciones.
Definición
El diagrama entidad-relación dibuja las tablas de un modelo de datos con sus columnas, marcando las claves (PK, FK), y une las tablas con líneas que llevan en cada extremo su cardinalidad: la horquilla de muchos, la barra de uno y el círculo de cero. Se lee mirando los extremos, sobre todo si admiten el cero. Sirve para diseñar, documentar o revisar una base de datos.
- Datos
- category · label · y · x · series · order · source · target · value · value2 · size
- Buena para
- Enseñar las tablas de un modelo, sus claves y si cada relación admite el cero en sus extremos.
- Evítala cuando
- Cuando el público no necesita claves ni cardinalidades y le basta con los tipos de cosas y cómo se relacionan.
- Se lee bien
- Entre 3 y 15 elementos; dibuja hasta 15
- Datos que faltan
- Se niega a dibujar y dice qué valor falta.
- Accesibilidad
- Lector de pantalla: tabla de datos · respeta «reducir movimiento»
Forma de los datos
Qué columnas pide
| Columna | Tipo | Para qué |
|---|---|---|
category | string | Lo único que distingue las DOS clases de fila de esta tabla: «entidad» o «vista» si la fila es una caja, «relacion» si es una línea. Un valor desconocido FALLA con la lista de los tres y una sugerencia; un spec sin ninguna fila con Tipo legible FALLA diciendo cuántas filas trajo y qué columnas sí traía, en vez de dibujar el ejemplo de la pieza. |
label | string | El nombre de la tabla, que es además su CLAVE: es lo que las relaciones escriben en «Desde» y «Hasta». Dos cajas con el mismo nombre fallan. En una fila de relación es el verbo que se rotula sobre la línea («figura como titular de»). |
y · opcional | number | La fila lógica de la caja, entero ≥ 0. OPCIONAL: sin ella la coloca la retícula compartida del kit. Va EN PAREJA con «Columna»: media coordenada falla, porque declarar sólo una planta la caja encima de otra sin que nada lo diga. |
x · opcional | number | La columna lógica de la caja, entero ≥ 0. OPCIONAL y en pareja con «Fila». |
series · opcional | string | Las columnas de la tabla, separadas por «|», cada una con su marca de clave delante: «PK localizador: texto | FK id_huesped: entero, nulo | entrada: fecha». Las marcas son PK, FK y PK/FK (también CP y CA); lo que no lleve prefijo es una columna normal. Es el rol canónico más cercano —el vocabulario no tiene una palabra para «las columnas de esta tabla»— y por eso lleva esta nota. Una entidad SIN ninguna PK falla; una vista CON PK, también. |
order · opcional | string | Una línea al pie de la caja: por qué esa tabla no existe todavía, de dónde sale una vista, cuándo se rellena una clave ajena. OPCIONAL, hasta dos líneas. Es el rol canónico más cercano; el vocabulario no tiene «detalle». |
source · opcional | string | El Nombre de la caja de la que sale la relación. Sólo se lee en las filas de tipo «relacion», y ahí es obligatorio: una relación sin los dos extremos falla nombrando el que falta. |
target · opcional | string | El Nombre de la caja a la que llega la relación. Obligatorio en las relaciones. |
value | string | La pata de gallo del extremo de ORIGEN, y el vocabulario está CERRADO en cuatro: 1 (exactamente uno), 0..1 (cero o uno), 1..N (uno o muchos), 0..N (cero o muchos). Se admiten «*» por «N» y «1..1» por «1», que no cambian lo que se afirma. Un «N» a secas FALLA —no dice si el cero está admitido, que es lo que esta notación existe para afirmar— y un «2..5» también, porque un mínimo distinto de 0 o 1 es una restricción de negocio. Obligatoria en toda relación. Es el rol canónico más cercano: el vocabulario no tiene «cardinalidad». |
value2 | string | La pata de gallo del extremo de DESTINO. Mismo vocabulario cerrado de cuatro, y también obligatoria. |
size · opcional | number | Píxeles que se desplaza el pasillo de trazado cuando dos relaciones unen las mismas cajas y se montan. Es un ajuste de TRAZADO, no una magnitud: no dimensiona nada y no se lee. Es el rol canónico más cercano; el vocabulario no tiene «desvío de pasillo». |
Tamaños
Ancha por necesidad
Esta pieza necesita anchura para que cada rótulo quepa entero. El motor prefiere decirlo a apretarla.
A menos de 480 px sus rótulos no caben sin pisarse o recortarse, y el motor no la publica así. En el móvil se ve la versión ancha, a tamaño legible y sin recortar, dentro de un marco que se desliza.
Cuándo usarla
Tres preguntas antes de elegirla
¿Hablas de tablas con columnas y claves?
Si es un modelo conceptual de tipos de cosas, el mapa de ontología es más ligero.
Sí: quédate con diagrama entidad-relación
No: usa Mapa de ontología¿Es un modelo de datos y no la arquitectura del software?
Si lo que hay que dibujar son sistemas, contenedores y quién llama a quién, usa el diagrama C4.
Sí: quédate con diagrama entidad-relación
No: usa Diagrama C4¿Interesa una sola versión del modelo?
Si hay que contar qué cambió de una versión a otra, las diferencias entre versiones lo hacen directamente.
Sí: quédate con diagrama entidad-relación
No: usa Diferencias entre versionesCódigo
La misma pieza, con tus datos
import { getPreset, renderComposition } from 'visx-render/node';
const spec = await getPreset('concept-erd');
spec.data.rows = misFilas; // category, label, value, value2
const { svg, warnings } = await renderComposition(spec);También en React con Chart y prepareComposition. Guía para desarrolladores →
Dudas
¿Qué cardinalidades admite?
Cuatro en cada extremo: 1, 0..1, 1..N y 0..N. Una «N» a secas hace fallar la pieza, porque no dice si el cero está admitido.
¿Cómo escribo las columnas de una tabla?
Separadas por «|», con la marca de clave delante cuando la tienen: PK, FK o PK/FK.
¿Por qué tanto énfasis en el cero?
Porque lo que decide si dos recuentos cuadran es si una relación admite el cero en un extremo, y escrito como «1» o «0..1» se confunde fácilmente.
¿Qué hace si faltan datos?
Se niega a dibujar y dice qué valor falta.
¿Cómo se ve en el móvil?
A menos de 480 px el motor no la compone sin pisar o cortar rótulos, y lo dice. En el móvil se ve la versión ancha, a tamaño legible, dentro de un marco que se desliza.
Relacionadas
Otras formas de responder «cómo funciona algo»
Matriz de adyacenciaquién se conecta con quién en una red
Diagrama de arcosconexiones entre nodos ordenados en una línea
Diagrama de pajaritacausas y consecuencias de un riesgo central
Columnas enfrentadascontrastar dos o más posturas
Rejilla con casilla vacíaver qué combinación falta
Diagrama de Ishikawacausas posibles de un problema por familias