Diagramas entidad-relación
Un retrato de las cosas que un sistema almacena y de cómo se relacionan. Viejo, pequeño, y todavía la forma más rápida de descubrir que dos personas entienden cosas distintas por la palabra "pedido".
9 min de lecturaER - crow's foot1 de 3
La respuesta corta
- El conceptual solo nombra entidades y relaciones; el lógico añade atributos, claves y muchos-a-muchos resueltos; el físico añade tipos e índices para un motor.
- Una clave primaria identifica una fila en su propia tabla; una ajena guarda la primaria de otra y es lo que de verdad implementa la relación.
- Un diagrama ER no tiene operaciones y sus relaciones se traducen a claves ajenas. Uno de clases modela comportamiento y expresa lo que un esquema no puede.
- Pata de gallo es el estándar de facto y lo que dibuja casi toda herramienta moderna. La notación de Chen dice lo mismo ocupando más espacio.
01Qué muestra#
Un diagrama entidad-relación describe las cosas que un sistema almacena y las conexiones entre ellas. Tres ingredientes, y no más:
| Elemento | Notación | Qué significa |
|---|---|---|
| Entidad | una caja con nombre | Una clase de cosa que merece almacenarse. Sustantivo en singular - Customer, no Customers- porque la caja representa el tipo y cada fila es una de ellas. |
| Atributo | una fila dentro de la caja | Un hecho sobre la entidad. En notación de pata de gallo viven dentro de la caja; en la antigua notación de Chen cuelgan de ella en óvalos. |
| Relación | Una conexión, con su cardinalidad dibujada en cada extremo. Los símbolos dicen cuántas entidades de ese extremo pueden participar. |
El valor está casi todo en la tercera. Las entidades de su dominio las enumera cualquiera; la discusión empieza en «¿puede existir un pedido sin cliente?», y un diagrama entidad-relación obliga a responder esa pregunta con un símbolo en vez de dejarla cómodamente vaga en un documento.
02Las claves son la parte que importa#
Los atributos son fáciles. Es en las claves donde un modelo entidad-relación se gana su sitio, porque una clave es una afirmación sobre la identidad, y en la identidad es donde se esconden los malentendidos de dominio.
| Elemento | Notación | Qué significa |
|---|---|---|
| Clave primaria (PK) | marcada PK, listada primero | El atributo, o conjunto de atributos, que identifica una fila. Cada entidad tiene exactamente una. |
| Clave ajena (FK) | marcada FK | Un atributo que contiene la clave de otra entidad. A cada línea de relación le corresponde una clave ajena en algún sitio, en el lado «muchos». |
| Clave natural | un atributo del mundo real | Un ISBN, un IBAN, una dirección de correo. Con significado, y rehén de que el mundo exterior cambie de opinión. |
| Clave subrogada | id generado | Un número o UUID sin significado. Estable por construcción, y justo por eso la opción por defecto en la mayoría de sistemas. |
| Clave compuesta | dos o más atributos | Identidad que necesita más de una columna. Común en entidades de unión, donde el par de claves ajenas es la identidad. |
03Cardinalidad, en breve#
Cada extremo de una relación lleva dos símbolos: el exterior dice cuántos y el interior dice si es opcional. Una barra es uno, una pata de gallo es muchos y un círculo es cero.
| Elemento | Notación | Qué significa |
|---|---|---|
| Exactamente uno | Barra, barra. Obligatorio y único en ambos extremos. | |
| Cero o uno | Círculo y luego barra. Opcional y único. | |
| Uno o más | Barra y luego pata de gallo. Obligatorio y múltiple. | |
| Cero o más | Círculo y luego pata de gallo. El extremo más común en la práctica. |
El símbolo se lee en el extremo más cercano a la entidad que restringe, que es lo contrario de lo que casi todo el mundo supone.
Ese último punto pilla a casi todos y tiene artículo propio - la notación de pata de gallo- sobre qué extremo es cuál, relaciones identificativas frente a no identificativas, y cómo resolver un muchos-a-muchos.
04Conceptual, lógico, físico#
La mayoría de los diagramas entidad-relación confusos son dos niveles bajo un mismo abrigo. Decidir cuál estás dibujando zanja una docena de discusiones pequeñas antes de que empiecen.
| Elemento | Notación | Qué significa |
|---|---|---|
| Conceptual | solo cajas y líneas | Entidades y relaciones en las palabras del negocio. Sin claves, sin tipos, a menudo sin atributos. Cabe en una página, y es el que revisa un interesado. |
| Lógico | atributos y claves, sin tipos | Normalizado, con claves e independiente de cualquier base concreta. Relaciones muchos-a-muchos resueltas. Esto es el diseño. |
| Físico | tablas, columnas, tipos | Nombrado como nombra las cosas la base de datos, con tipos, índices y la desnormalización que la carga realmente justifique. |
No siempre hacen falta los tres. Un servicio pequeño puede ir directo al lógico. Lo que nunca funciona es enseñar un diagrama conceptual a un desarrollador que necesita el físico, o uno físico a un responsable de negocio que quería comprobar si un cliente puede tener dos direcciones.
05¿Diagrama entidad-relación o de clases?#
Se parecen y significan cosas distintas. Un diagrama de clases describe tipos en un programa: comportamiento, herencia, visibilidad, navegabilidad. Un diagrama entidad-relación describe datos en reposo: claves, cardinalidad e integridad referencial. El solapamiento es real, y la divergencia también.
| Elemento | Notación | Qué significa |
|---|---|---|
| Operaciones | solo diagrama de clases | Las entidades no tienen métodos. Las filas no hacen cosas. |
| Claves | solo entidad-relación | Un diagrama de clases tiene identidad de objeto gratis; a una base de datos hay que decirle qué es la identidad. |
| Herencia | nativa en clases | El entidad-relación la modela como estructura supertipo-subtipo, y el modelo físico tiene que elegir una de tres disposiciones de tablas para implementarla. |
| Muchos-a-muchos | dibujable en ambos | Un diagrama de clases puede dejarlo como una línea para siempre. Un modelo entidad-relación lógico debe resolverlo en una entidad de unión, porque una base de datos no puede almacenarlo de otro modo. |
Úsalo cuando
- El tema es lo que se almacena, y en el público hay un DBA
- Necesitas resolver con precisión la opcionalidad y la cardinalidad
- La salida es un esquema, una migración o un conjunto de restricciones
- Un responsable de negocio tiene que confirmar el vocabulario del dominio
Usa otra cosa cuando
- El tema es el comportamiento o una jerarquía de tipos: usa un diagrama de clases
- Estás documentando las cargas útiles de una API y no el almacenamiento
- El almacén no tiene esquema y la forma varía de verdad según el documento
- Son tres tablas y el DDL es más corto que el diagrama
06Errores comunes#
- Nombres de entidad en plural.
Customeres la entidad;customerses la tabla. Mezclarlos vuelve ilegibles las frases de relación. - Muchos-a-muchos sin resolver en un modelo lógico. Ninguna base de datos puede almacenarlo. Resuélvelo y nombra la entidad de unión por lo que significa:
Enrolment, noStudentCourse. - Todas las relaciones opcionales. Un modelo donde nada es obligatorio no codifica ninguna regla, y las restricciones acaban esparcidas por el código de la aplicación.
- Atributos que en realidad son entidades. Si «dirección» necesita cinco subcampos y puede aparecer dos veces, es una entidad.
- Modelar tablas de informes. Un modelo de lectura desnormalizado pertenece al modelo físico con una nota que explique por qué, no al lógico, donde se confundirá con el dominio.
En una línea cada uno
- 01Entidades, atributos, relaciones, y el valor está en las relaciones.
- 02Una clave es una afirmación sobre la identidad; prefiere claves subrogadas y restringe la natural.
- 03La cardinalidad se lee en el extremo más cercano a la entidad que restringe.
- 04Conceptual, lógico y físico responden a preguntas distintas para personas distintas.
- 05Un diagrama de clases describe tipos en un programa; uno entidad-relación describe datos en reposo.
- 06Lee cada línea en voz alta en ambos sentidos: la revisión más barata que existe.
07Preguntas frecuentes#
¿Qué es un diagrama entidad-relación?
Un retrato de las cosas que un sistema almacena y de cómo se relacionan: entidades como cajas, sus atributos dentro, y líneas entre ellas que llevan la cardinalidad. Es la manera estándar de acordar un modelo de datos antes de que exista ninguna tabla.
¿Qué diferencia hay entre modelos conceptual, lógico y físico?
Un modelo conceptual nombra entidades y relaciones y nada más, así que es un vocabulario compartido. Uno lógico añade atributos, claves y relaciones muchos-a-muchos resueltas, sin dejar de ser independiente de la base de datos. Uno físico añade tipos, índices y lo que exija un motor concreto.
¿Qué diferencia hay entre una clave primaria y una ajena?
Una clave primaria identifica una fila de forma única dentro de su propia tabla. Una clave ajena es una columna que guarda un valor de clave primaria de otra tabla, y es lo que de verdad implementa una relación en una base relacional.
¿En qué se diferencia un diagrama ER de uno de clases UML?
Un diagrama ER modela datos almacenados, así que no tiene operaciones y sus relaciones se traducen a claves ajenas. Uno de clases modela tipos con comportamiento y puede expresar cosas que un esquema relacional no, como interfaces y polimorfismo. Ambos suelen describir el mismo dominio sin coincidir elemento a elemento.
¿Qué notación debería usar para diagramas ER?
Pata de gallo es el estándar de facto y es lo que dibuja casi toda herramienta moderna. La notación de Chen, que pone las relaciones en rombos, sigue siendo común en los libros de texto. Lo que se puede expresar es en esencia lo mismo, y pata de gallo es más compacta.
En esta serie
- 01Diagramas ER
- 02Notación pata de gallo
- 03Diseño de esquema
Lecturas relacionadas
Referencia de notación
Práctica del modelado
Diagramas de estructura
Diagramas de estructura
Diagramas de estructura
Práctica del modelado