SQL

Ejemplos de modelo entidad-relación: 4 casos resueltos

· 8 min de lectura
Ejemplos de modelo entidad-relación: 4 casos resueltos
Photo by Growtika / Unsplash

Caso 01 · Grupos empresariales

El caso

• Un grupo empresarial (id_grupo) tiene muchas empresas (id_empresa). Cada empresa pertenece solamente a un grupo. • Las empresas están conectadas por una relación de jerarquía. Cada subsidiaria es asignada a una empresa de nivel superior, esto es, la empresa padre. • Cada empresa tiene varias plantas de producción (id_planta). Cada planta está bajo el control de una sola empresa. • Las plantas de producción producen muchos productos diversos (id_producto). Los productos son exclusivos a cada planta, es decir, un producto es producido por solo una planta.

La solución

Entidades identificadas. Los sustantivos del enunciado de los que se necesita guardar información son cuatro, y forman una cadena descendente:

GRUPO → EMPRESA → PLANTA → PRODUCTO

Atributos

Entidad
Atributos (la clave primaria en primer lugar)
GRUPO
id_grupo, nom_grupo, pai_grupo
EMPRESA
id_empresa, nom_empresa, ruc_empresa, sec_empresa
PLANTA
id_planta, nom_planta, ubi_planta, cap_planta
PRODUCTO
id_producto, nom_producto, uni_producto, pre_producto

Relaciones y cardinalidades

Relación
Entidades
Cardinalidades
Tipo
Grado
agrupa
GRUPO ↔ EMPRESA
GRUPO (1,n) · EMPRESA (1,1)
1:N
2
jerarquía
EMPRESA ↔ EMPRESA
padre (0,n) · subsidiaria (0,1)
1:N
1
controla
EMPRESA ↔ PLANTA
EMPRESA (1,n) · PLANTA (1,1)
1:N
2
produce
PLANTA ↔ PRODUCTO
PLANTA (1,n) · PRODUCTO (1,1)
1:N
2

Decisiones de diseño

La jerarquía entre empresas es una relación reflexiva o de grado 1: la entidad EMPRESA se relaciona consigo misma. Cada rama necesita su rol (padre y subsidiaria); sin ellos el diagrama es ambiguo.Los mínimos de la reflexiva son cero en ambos extremos: las empresas cabecera de grupo no dependen de nadie y no toda empresa tiene subsidiarias.La frase «un producto es producido por solo una planta» fija la cardinalidad (1,1) del lado de PRODUCTO. Si un producto pudiera fabricarse en varias plantas, la relación sería M:N y exigiría una tabla intermedia.Todo el modelo es 1:N, por lo que no aparece ningún rombo doble.

Diagrama de Chen

Caso 01 · Notación de Chen. Toda la cadena es 1:N; la relación jerarquía une EMPRESA consigo misma.

Diagrama de Martin

Caso 01 · Notación de Martin. La misma jerarquía, ahora como una línea que sale y vuelve a la caja EMPRESA.

Caso 02 · Elecciones universitarias

El caso

• La universidad tiene diversos clubes para la organización de eventos, como parte de sus actividades extracurriculares. Cada club tiene un código, un nombre, una sede dentro del campus y un presupuesto anual. • Los clubes son gestionados por los estudiantes, los cuales son elegidos por el alumnado para un periodo anual de gobierno. Cada proceso electoral tiene una fecha de realización y se crean mesas de sufragio para que los alumnos puedan votar. • Los estudiantes pueden inscribir sus listas de candidatos. Cada lista debe tener un presidente, vicepresidente, secretario, tesorero y dos vocales. • Al finalizar cada proceso y luego de realizar la contabilización de los votos se proclama a la lista ganadora.

La solución

Entidades identificadas

CLUB · PROCESO · MESA (débil) · LISTA · ESTUDIANTE

MESA es una entidad débil: las mesas de sufragio se numeran desde 1 dentro de cada proceso electoral, de modo que num_mesa por sí solo no identifica ninguna mesa. Necesita añadir la clave del proceso, lo que constituye una dependencia de identificación.Atributos

Entidad
Atributos
CLUB
cod_club, nom_club, sed_club, pre_club
PROCESO
cod_proceso, fec_proceso, ani_proceso, est_proceso
MESA (débil)
num_mesa (identificador parcial), ubi_mesa, cap_mesa
LISTA
cod_lista, nom_lista, vot_lista
ESTUDIANTE
cod_estudiante, nom_estudiante, dni_estudiante, esc_estudiante

Relaciones y cardinalidades

Relación
Entidades
Cardinalidades
Tipo
convoca
CLUB ↔ PROCESO
CLUB (1,n) · PROCESO (1,1)
1:N
instala
PROCESO ↔ MESA
PROCESO (1,n) · MESA (1,1)
1:N
recibe
PROCESO ↔ LISTA
PROCESO (1,n) · LISTA (1,1)
1:N
proclama
PROCESO ↔ LISTA
PROCESO (0,1) · LISTA (0,1)
1:1
integra
LISTA ↔ ESTUDIANTE
LISTA (6,6) · ESTUDIANTE (0,n)
M:N
sufraga
MESA ↔ ESTUDIANTE
MESA (1,n) · ESTUDIANTE (0,n)
M:N

La relación integra lleva un atributo propio: car_integrante, el cargo que ocupa cada estudiante dentro de la lista.Decisiones de diseñoLa cardinalidad (6,6) de integra no es un capricho: el enunciado exige exactamente seis integrantes por lista (presidente, vicepresidente, secretario, tesorero y dos vocales). Conviene recordar que la cardinalidad admite cualquier número, no solo 0, 1 o n.El cargo es atributo de la relación y no de ninguna de las dos entidades: un estudiante no «tiene un cargo» en abstracto, lo tiene dentro de una lista concreta.PROCESO y LISTA están unidos dos veces, por recibe (las listas inscritas) y por proclama (la lista ganadora). No es un error: son dos hechos distintos del negocio.proclama es 1:1 y opcional a ambos lados, porque un proceso solo tiene ganadora una vez terminado el conteo.sufraga registra en qué mesa vota cada estudiante en cada proceso; por eso es M:N y no 1:N.

Diagrama de Chen

Caso 02 · Notación de Chen. MESA es entidad débil: el rombo instala lleva una I por dependencia de identificación.

Diagrama de Martin

Caso 02 · Notación de Martin. MESA arrastra COD_PROCESO dentro de su clave: es lo mismo que la I del rombo en Chen.

Caso 03 · Diseño de encuestas

El caso

• Realizar un modelo para organizar los datos de un futuro sistema de diseño de encuestas, donde se pueden crear preguntas de tres tipos: opción única, opción múltiple y de texto. • El modelo debe soportar la creación de encuestas, sus preguntas y opciones. Por otro lado, debe soportarse el registro de destinatarios de encuestas pues éstas serán distribuidas vía correo electrónico. • Por cada destinatario que responde una encuesta se registran sus respuestas para un posterior procesamiento.

La solución

Entidades identificadas

ENCUESTA · PREGUNTA (supertipo) · OPCION · DESTINATARIOSubtipos de PREGUNTA: P_UNICA · P_MULTIPLE · P_TEXTOAtributos

Entidad
Atributos
ENCUESTA
cod_encuesta, tit_encuesta, des_encuesta, fec_encuesta
PREGUNTA (supertipo)
cod_pregunta, tex_pregunta, ord_pregunta, obl_pregunta
P_UNICA (subtipo)
ale_unica (aleatoriza el orden de las opciones)
P_MULTIPLE (subtipo)
max_multiple (máximo de opciones marcables)
P_TEXTO (subtipo)
lon_texto (longitud máxima admitida)
OPCION
cod_opcion, tex_opcion, ord_opcion
DESTINATARIO
cod_destinatario, nom_destinatario, ema_destinatario

Los tres subtipos heredan los cuatro atributos de PREGUNTA y añaden el suyo. La herencia baja del supertipo a los subtipos, nunca al revés.

Relaciones y cardinalidades

Relación
Entidades
Cardinalidades
Tipo
contiene
ENCUESTA ↔ PREGUNTA
ENCUESTA (1,n) · PREGUNTA (1,1)
1:N
ofrece
PREGUNTA ↔ OPCION
PREGUNTA (0,n) · OPCION (1,1)
1:N
envia
ENCUESTA ↔ DESTINATARIO
ENCUESTA (0,n) · DESTINATARIO (0,n)
M:N
responde
PREGUNTA ↔ DESTINATARIO
PREGUNTA (0,n) · DESTINATARIO (0,n)
M:N
Relación
Atributos propios
envia
fec_envio, est_envio
responde
val_respuesta, fec_respuesta

La generalización

PREGUNTA es un supertipo que se descompone en tres subtipos. Para clasificar la jerarquía hay que responder a dos preguntas, y ambas se contestan leyendo el enunciado:¿Los subtipos cubren todos los casos? Sí: única, múltiple y de texto agotan los tipos posibles. La jerarquía es TOTAL, y en Chen se dibuja un círculo sobre el triángulo invertido.¿Una pregunta puede pertenecer a dos subtipos a la vez? No. La jerarquía es EXCLUSIVA, y en Chen se representa mediante un arco que cruza las ramas.Resultado: jerarquía exclusiva total → círculo y arco.Decisiones de diseñoLa respuesta no es una entidad. Es la tentación clásica de este caso, pero una respuesta no existe por sí sola: solo existe cuando hay un destinatario concreto y una pregunta concreta a la vez. Por eso val_respuesta y fec_respuesta son atributos de la relación M:N responde.La relación ofrece sale del supertipo con mínimo 0, porque las preguntas de texto no tienen opciones. La alternativa más estricta sería colgar la relación únicamente de los dos subtipos que sí las admiten.Al pasar al modelo lógico, cada relación M:N generará su propia tabla intermedia, que es donde acabarán viviendo los atributos de la relación.

Diagrama de Chen

Caso 03 · Notación de Chen. El círculo indica jerarquía total y el arco, exclusiva.

Diagrama de Martin

Caso 03 · Notación de Martin. Los subtipos van anidados; por eso esta notación no distingue una jerarquía total de una parcial.
Chen y Martin no representan la generalización igual. Chen emplea un símbolo dedicado —triángulo invertido, círculo y arco— que permite expresar con precisión si la jerarquía es total o parcial y si es exclusiva o solapada. Martin la resuelve anidando los subtipos dentro de la caja del supertipo: es más compacto y más cercano a la implementación, pero el anidamiento no distingue una jerarquía total de una parcial.

Caso 04 · Control de pagos

El caso

• Una bodega requiere controlar las cuentas de crédito que se crean para los clientes. Un cliente puede tener una cuenta con un monto máximo de consumo o realizar un pago previo y consumirlo en el tiempo. • La bodega entrega un ticket al cliente que abre una cuenta a fin de que ese ticket sea presentado por la persona que realiza una compra, debido a que el cliente o cualquier familiar o persona que porte el ticket puede hacer uso de éste. • El monto consumido se debita del crédito otorgado o saldo restante, hasta que quede agotado. Queda a criterio de la dueña de la bodega otorgar créditos adicionales, para lo cual se abre una nueva cuenta y se entrega un nuevo ticket. • Así mismo, la dueña puede suspender una cuenta, sin importar si se agotó el crédito o saldo.

La solución

Entidades identificadas

CLIENTE · CUENTA · TICKET · MOVIMIENTO (débil)

Atributos

Entidad
Atributos
CLIENTE
cod_cliente, nom_cliente, dni_cliente, tel_cliente
CUENTA
cod_cuenta, tip_cuenta, mon_cuenta, sal_cuenta, fec_cuenta, est_cuenta
TICKET
cod_ticket, bar_ticket, fec_ticket, est_ticket
MOVIMIENTO (débil)
num_movimiento (identificador parcial), fec_movimiento, mon_movimiento, tip_movimiento, por_movimiento

distingue las dos modalidades del enunciado: crédito con monto máximo o pago previo consumible. est_cuenta registra si está activa, agotada o suspendida. por_movimiento guarda quién presentó el ticket, que puede no ser el titular.Relaciones y cardinalidades

Relación
Entidades
Cardinalidades
Tipo
abre
CLIENTE ↔ CUENTA
CLIENTE (1,n) · CUENTA (1,1)
1:N
respalda
CUENTA ↔ TICKET
CUENTA (1,1) · TICKET (1,1)
1:1
registra
CUENTA ↔ MOVIMIENTO
CUENTA (0,n) · MOVIMIENTO (1,1)
1:N

Decisiones de diseño

CLIENTE–CUENTA es 1:N y no 1:1 porque el enunciado dice que, si la dueña otorga un crédito adicional, se abre una cuenta nueva con un ticket nuevo. Un mismo cliente acumula varias cuentas a lo largo del tiempo.El ticket se modela como entidad propia y no como atributo de CUENTA porque tiene datos propios (código de barras, fecha de emisión, estado) y circula entre personas distintas del titular. La relación es 1:1, la única del laboratorio.MOVIMIENTO es entidad débil con dependencia de identificación: los movimientos se numeran dentro de cada cuenta, así que dos cuentas distintas pueden tener ambas su movimiento número 1. Su clave real es cod_cuenta + num_movimiento.est_cuenta es obligatorio y no se deduce del saldo: el enunciado permite suspender una cuenta sin importar si el crédito se agotó, de modo que una cuenta con saldo puede estar suspendida y otra sin saldo puede seguir activa.La cardinalidad mínima de CUENTA en registra es cero: una cuenta recién abierta todavía no tiene movimientos.

Diagrama de Chen

Caso 04 · Notación de Chen. respalda es la única relación 1:1 del laboratorio.

Diagrama de Martin

Caso 04 · Notación de Martin. La clave de MOVIMIENTO es compuesta: COD_CUENTA + NUM_MOVIMIENTO.

Resumen de los cuatro casos

Caso
Conceptos que ejercita
01 · Grupos empresariales
Cadena de relaciones 1:N · Relación reflexiva (grado 1) · Roles
02 · Elecciones universitarias
Entidad débil · Dependencia de identificación · Cardinalidad numérica (6,6) · Relación 1:1 · Dos relaciones M:N · Atributo de relación · Dos relaciones entre el mismo par de entidades
03 · Diseño de encuestas
Generalización exclusiva total · Herencia de atributos · Atributos de relación M:N · Cuándo algo no debe ser entidad
04 · Control de pagos
Relación 1:1 · Entidad débil · Clave compuesta · Atributos de estado