UT03 - Modelo entidad relación avanzado
Conexión legislativa
En esta Unidad de Trabajo nos centraremos en BBDD-CE-06.a, BBDD-CE-06.b, BBDD-CE-06.c, BBDD-CE-06.d y BBDD-CE-06.e
Introducción
En la UT02 estudiamos los cimientos del diseño conceptual mediante el Modelo Entidad/Relación clásico. Aprendimos a abstraer el mundo real en entidades con atributos simples y a conectarlas mediante relaciones binarias (
En las organizaciones reales existen reglas de negocio, restricciones de seguridad y estructuras de datos que no se adaptan de forma limpia a una combinación de relaciones binarias o entidades independientes. Intentar forzar estas situaciones complejas en el modelo básico conduce inevitablemente a dos problemas graves:
- Pérdida de semántica y expresividad: el diagrama omite restricciones clave del dominio, dejando la responsabilidad de validarlas a la programación de la aplicación.
- Redundancia e inconsistencia: se crean relaciones binarias artificiales que introducen combinaciones de datos inválidas o duplicadas en la base de datos.
¿Por qué necesitamos conceptos avanzados?
Para solucionar estas limitaciones, la UT03 introduce un conjunto de extensiones del modelo conceptual que responden a necesidades específicas de modelado:
- Dependencias de existencia e identificación: existen objetos que no tienen sentido de forma aislada en el sistema. Una
LINEA_COMPRAo unHISTORIAL_ACCESOSsolo existen en función de laCOMPRAo elUSUARIOque los origina. Para ello utilizamos las Entidades Débiles. - Estructuras jerárquicas e identificación: ¿cómo representamos que un
COCHEy unaMOTOcomparten propiedades comunes de unVEHICULO, pero poseen atributos y comportamientos totalmente distintos? Mediante el concepto de Especialización y Generalización (Herencia). - Autovinculación y roles: una misma entidad puede interactuar consigo misma en diferentes papeles. Por ejemplo, en la entidad
EMPLEADO, un trabajador actúa como supervisado mientras que otro actúa como supervisor. Esto se resuelve mediante Relaciones Reflexivas o Recursivas. - Hechos atómicos de más de dos entidades: a menudo, una acción en el sistema no ocurre entre dos partes, sino que requiere la convergencia de tres o más elementos de forma simultánea.
Entidades - Fuertes VS Débiles
Hasta ahora, todas las entidades que hemos visto se pueden considerar fuertes (o independientes). Una entidad fuerte posee existencia propia por sí misma dentro del dominio del problema y cuenta con un atributo identificador.
Sin embargo, a menudo nos encontraremos con entidades débiles: aquellas cuya existencia depende de forma estricta de otra entidad principal. Es decir, no pueden existir de forma autónoma en el sistema.
Existen 2 tipos de dependencia: de existencia y de identificación.
Dependencia de existencia
Ocurre cuando la entidad débil posee un atributo identificador propio que la distingue de forma única en todo el sistema, pero su ciclo de vida está completamente ligado al de la entidad fuerte.
- Posee su propio atributo principal.
- Si la instancia de la entidad fuerte se borra, las instancias asociadas de la entidad débil se deben eliminar también.
Se representan con un rectángulo doble:

CLIENTEes entidad fuerte.FAMILIARes entidad débil.
En una compañía de seguros podemos tener las entidades VEHÍCULO y PÓLIZA_SEGURO.
- La póliza posee un número de póliza único que le sirve de atributo principal.
- Sin embargo, una póliza se crea por y para un vehículo concreto. Si el vehículo se da de baja en el sistema, su póliza asociada deja de tener sentido.

Dependencia de identidad
Es el grado de dependencia más fuerte. Ocurre cuando la entidad débil no posee un atributo identificador. Para poder identificarla necesitamos combinar 2 elementos:
- La clave principal de la entidad fuerte de la que depende.
- Un atributo propio llamado clave parcial (o discriminador).
Se representan de la siguiente manera:
- La relación: mediante un rombo doble.
- La entidad débil: mediante un rectángulo doble.
- La clave parcial: subrayado discontinuo.

LIBROes entidad fuerte.EJEMPLARes entidad débil.numCopiaes la clave parcial deEJEMPLAR.
En un supermercado podemos tener las entidades COMPRA y LÍNEA_COMPRA.
- La entidad
COMPRAse identifica con una combinación defechaHoraeidEmpleado, o incluso con unidCompraautogenerado. - La entidad
LÍNEA_COMPRArepresenta cada producto individual dentro de un ticket. Internamente se numera con un atributo propionumLinea.
El atributo numLinea no identifica de forma única una instancia en todo el sistema, ya que existen miles de "líneas 1" (una por cada compra realizada en la tienda). Para identificar inequívocamente una línea de compra concreta, es necesario combinar:
- El atributo principal de la entidad fuerte:
idCompra. - Su clave parcial:
numLinea.
La clave completa de una línea de compra sería (idCompra, numLinea).

Al igual que con el ejemplo anterior, si borramos una instancia de COMPRA, debemos borrar también todas las instancias de LÍNEA_COMPRA asociadas.
Atributos
Además de los atributos simples, principales y compuestos que ya vimos, existen dos tipos especiales de atributos que responden a la acumulación de valores o al comportamiento dinámico de los datos: los atributos multivalorados y los atributos derivados (o calculados).
Atributos multivalorados
Un atributo multivalorado es aquel que puede almacenar más de un valor simultáneamente para una misma instancia u ocurrencia de entidad.
En lugar de definir atributos independientes y rígidos como telefono1, telefono2 o telefono3 (lo cual limita el número de valores y genera huecos nulos en la base de datos), el modelo permite declarar que una propiedad representa una colección o lista de valores.
- Un
CLIENTEpuede disponer de varios números de teléfono de contacto (telefonos). - Un
EMPLEADOpuede hablar varios idiomas (idiomas). - Una
PELÍCULApuede tener varias categorías o géneros asignados (generos).
Representación gráfica
- Notación de Chen: se representa mediante una doble elipse conectada a la caja de la entidad.

- Notación de bloque: se indica añadiendo corchetes
[]al final del nombre del atributo (ej.telefonos[]).

Atributos derivados
Son aquellos cuyo valor no se almacena directamente de forma física en la base de datos, sino que se deduce, calcula o computa en tiempo real a partir de otros datos del sistema (atributos de la misma entidad, de entidades relacionadas o funciones del sistema como la fecha actual).
edad: se calcula en tiempo real restando la fecha actual a la fecha de nacimiento almacenada (CURRENT_DATE - fechaNacimiento).numEjemplares: en una biblioteca, se calcula contando dinámicamente las ocurrencias de la entidad débilEJEMPLARasociadas a unLIBRO.importeTotal: en un ticket deCOMPRA, se calcula sumando el subtotal de todas susLÍNEA_COMPRAasociadas más el IVA correspondiente.
Representación gráfica
- Notación de Chen: mediante una elipse con trazo discontinuo.

- Notación de bloque: con una barra inclinada frente al nombre del atributo.

Documentación en el Diccionario de Datos
Como el diagrama ER solo muestra el nombre del atributo la regla de cálculo exacta debe quedar especificada formalmente en el Diccionario de Datos del sistema.
Toda entrada de un atributo derivado en el Diccionario de Datos debe incluir:
- Atributo/s base/origen: datos requeridos para el cálculo.
- Expresión de cálculo: la fórmula matemática o lógica de cálculo.
No hace falta ser muy estricto con una sintaxis concreta, ya que aún no hemos especificado las tecnologías que vamos a utilizar. Esta descripción se hace usando nuestras propias palabras.
| Entidad / Relación | Atributo Derivado | Atributos Base / Origen | Regla de Cálculo |
|---|---|---|---|
CLIENTE | /edad | fechaNacimiento, FECHA_ACTUAL() | |
EMPLEADO | /antiguedad | fechaContratacion, FECHA_ACTUAL() | |
PRODUCTO | /precioFinal | precioBase, porcentajeIVA | |
PEDIDO | /importeTotal | LINEA_PEDIDO.cantidad, LINEA_PEDIDO.precioUnitario |
Relaciones avanzadas
En la UT02 estudiamos cómo conectar entidades mediante relaciones binarias. Estas permiten modelar la inmensa mayoría de las interacciones del mundo real. Sin embargo, existen situaciones donde las reglas de negocio son más complejas que la relación entre dos entidades. Para ampliar la capacidad semántica de los diagramas ER conviene introducir dos tipos de relación nuevos:
- Las relaciones reflexivas: una misma entidad se relaciona consigo misma. Muy útiles para representar estructuras de jerarquía entre elementos del mismo tipo.
- Las relaciones ternarias: un hecho que sucede en el mundo real une 3 entidades distintas simultáneamente. Descomponer este tipo de relaciones en varias relaciones binarias supone perder el significado de la regla de negocio original.
Relaciones reflexivas
También llamadas recursivas o de grado 1. Son aquellas relaciones donde la misma entidad cumple 2 roles diferentes en la relación. Algunos ejemplos comunes son las relaciones entre familiares o entre empleados. Por ejemplo:
"Todo empleado trabaja para otro, excepto el jefe de la empresa. Un jefe supervisa a varios empleados"

Como puede apreciarse, a simple vista no puede saberse qué conexión de EMPLEADO con SUPERVISAR corresponde con la relación "supervisa" y cuál con "es supervisado" y es precisamente por esto que en las relaciones reflexivas resulta obligatorio etiquetar explícitamente el rol en cada uno de los extremos que conectan la entidad con el rombo.
Rol
Son las etiquetas o nombres que especifican la función o papel que desempeña cada instancia de una entidad al participar en una relación reflexiva.
Al conectar una entidad consigo misma, ambos extremos parten del mismo origen. Los roles permiten romper esa ambigüedad indicando en qué sentido debe leerse la regla de negocio:
- Rol de
supervisor(o jefe): Representa el papel de la instancia que ejerce la acción de supervisar sobre otros. - Rol de
supervisado(o subordinado): Representa el papel de la instancia que recibe la supervisión.

Relaciones ternarias
También llamadas de grado 3 (o
El principio de Irreducibilidad
Una relación es legítimamente ternaria cuando es atómica e irreducible: no se puede desglosar en dos o tres relaciones binarias independientes sin alterar la regla de negocio o perder la trazabilidad de los datos.
Consideremos la siguiente regla de negocio en un instituto:
"Un ALUMNO puede cursar en uno o varios MÓDULOS por CURSO ACADÉMICO"
Podríamos tratar de descomponer esta regla en las siguientes relaciones binarias:
ALUMNOcursa unMÓDULO.ALUMNOse matricula enCURSO_ACADÉMICO.MÓDULOse oferta enCURSO_ACADÉMICO.

Sin embargo, se da la siguiente situación:
- Juan cursó Bases de Datos.
- Juan estuvo matriculado en los cursos 24/25 y 25/26.
- Bases de Datos se ofertó tanto en 24/25 como en 25/26.
¿En qué curso académico hizo Juan el módulo de Bases de Datos? Es imposible determinar en cuál se matriculó, o si suspendió y se matriculó en ambos cursos. Hasta ahora hemos visto que una solución a esto es mediante atributo en relaciones, pero un atributo en la relación CURSAR que se "desvincule" de la entidad CURSO_ACADÉMICO no es una solución válida. ¿Y si no existiese una instancia de CURSO_ACADÉMICO correspondiente con el atributo de CURSAR?
¿Y si, además, quisiéramos guardar el atributo notaFinal?
- Si lo ponemos en la relación
CURSAR(ALUMNO-MÓDULO): sólo podríamos guardar una única nota para Juan en Bases de Datos a lo largo de toda su vida académica. Si Juan suspende en el curso 24/25 con uny aprueba en el 25/26 con un , el sistema no podría almacenar ambas calificaciones sin sobrescribir o duplicar registros. - Si lo ponemos en
MATRICULAR(ALUMNO-CURSO_ACADÉMICO): guardaríamos una nota global por curso escolar, pero no sabríamos a qué módulo corresponde. - Si lo ponemos en
OFERTAR(MÓDULO-CURSO_ACADÉMICO): sería la nota del módulo en un curso, ¡pero totalmente desvinculada de quién la ha sacado!
Conclusión: la nota de un alumno no pertenece al alumno solo, ni al módulo solo, ni al curso solo, ni a ninguna combinación de dos de ellos. La calificación pertenece de forma unívoca a la intersección atómica de las tres entidades: un ALUMNO concreto, en un MÓDULO concreto, durante un CURSO_ACADÉMICO concreto.
Representación mediante Relación Ternaria
Para solucionar esta incoherencia y mantener la integridad conceptual, debemos sustituir las relaciones binarias independientes por una relación ternaria atómica.
Desafortunadamente, ERDPlus no permite representar este tipo de relación de manera "pura", sino que depende de otro tipo de entidad llamada "Associative". Como aún no hemos visto ese tipo de entidad, voy a utilizar draw.io.

Participación y cardinalidad en relaciones ternarias
Para establecer la participación de cada una de las entidades en la relación, es necesario fijar una instancia concreta de las otras entidades asociadas:
- Para evaluar
ALUMNO: fijamosCURSO_ACADÉMICOyMÓDULO. - Para evaluar
CURSO_ACADÉMICO: fijamosALUMNOyMÓDULO. - Para evaluar
MÓDULO: fijamosCURSO_ACADÉMICOyALUMNO.
Paso a paso:
- Extremo de
ALUMNO:- Fijamos
CURSO_ACADÉMICO: 25/26. - Fijamos
MÓDULO: Bases de Datos. - ¿Cuántos alumnos pueden matricularse en Bases de Datos en el curso 25/26?
- Ninguno, si no se oferta el módulo (0) o varios (n).

- Ninguno, si no se oferta el módulo (0) o varios (n).
- Fijamos
- Extremo de
CURSO_ACADÉMICO:- Fijamos
ALUMNO: Juan. - Fijamos
MÓDULO: Bases de Datos. - ¿En cuántos cursos académicos puede matricularse Juan de Bases de Datos?
- En ninguno si se matricula de otra cosa (0) o en varios si suspende y tiene que repetir (n).

- En ninguno si se matricula de otra cosa (0) o en varios si suspende y tiene que repetir (n).
- Fijamos
- Extremo de
MÓDULO:- Fijamos
CURSO_ACADÉMICO: 25/26. - Fijamos
ALUMNO: Juan. - ¿De cuántos módulos se puede matricular Juan en el curso 25/26?
- De ninguno si anula la matrícula (0) o de varios (n).

- De ninguno si anula la matrícula (0) o de varios (n).
- Fijamos
Para establecer la cardinalidad global, al igual que con las relaciones binarias, nos quedamos con los máximos de participaciones de cada entidad. En este caso, sería una cardinalidad resultante de:
Modelo E/R extendido
Generalización
Agregación
