10. Asociaciones entre conceptos: vínculos, roles y dirección de lectura

10.1 Introducción

Un modelo de dominio no está formado solo por conceptos aislados. También necesita mostrar cómo esos conceptos se relacionan entre sí. Las asociaciones representan vínculos significativos del negocio, por ejemplo un Paciente reserva un Turno, un Profesional posee una Agenda o una Agenda contiene Franjas horarias.

Modelar asociaciones permite comprender dependencias, responsabilidades, reglas y restricciones. Si los conceptos están bien nombrados pero sus relaciones son confusas, el modelo seguirá siendo difícil de validar y de usar.

10.2 Imagen conceptual de asociaciones

Asociaciones entre conceptos del dominio con vínculos, roles y dirección de lectura entre paciente, turno, profesional, agenda y especialidad

10.3 Qué es una asociación

Una asociación es una relación significativa entre dos o más conceptos del dominio. Indica que, para el negocio, esos conceptos están vinculados de alguna manera relevante.

Por ejemplo, si decimos que un Paciente reserva un Turno, no estamos describiendo solo dos conceptos separados. Estamos afirmando que existe un vínculo con significado: la reserva conecta al paciente con un turno concreto y probablemente genera reglas, estados o historial.

Una asociación debe responder una pregunta del dominio. Si una relación no aporta significado, probablemente no necesita aparecer en el modelo.

10.4 Asociaciones frente a atributos

A veces surge la duda de si algo debe modelarse como atributo o como asociación. Si el dato apunta a otro concepto con significado propio, suele convenir representarlo como asociación. Si solo describe una característica simple, puede ser atributo.

Por ejemplo, en Turno podríamos tener un atributo fecha, pero Profesional no debería ser solo un texto dentro de Turno si el profesional tiene identidad, especialidades, agenda y reglas propias. En ese caso, Turno se asocia con Profesional o con Agenda, según corresponda al modelo.

10.5 Nombrar asociaciones

Una asociación clara debe poder leerse como una frase del negocio. Por ejemplo:

Paciente reserva Turno
Profesional atiende Especialidad
Agenda contiene Franja horaria
Turno pertenece a Agenda

Nombrar la asociación ayuda a validar si el vínculo tiene sentido. Si no podemos leer la relación como una frase comprensible, quizás falta información o estamos uniendo conceptos de manera artificial.

10.6 Dirección de lectura

La dirección de lectura indica cómo conviene leer una asociación para que sea clara. En un diagrama conceptual, una línea entre dos conceptos puede tener un nombre que se lee en un sentido determinado. Por ejemplo, "Paciente reserva Turno" se lee desde Paciente hacia Turno.

Esto no significa necesariamente que en el diseño técnico un objeto tenga una referencia directa al otro. La dirección de lectura es una ayuda de comunicación en el modelo conceptual. Su propósito es que el vínculo pueda interpretarse sin ambigüedad.

10.7 Roles en una asociación

Un rol describe el papel que cumple un concepto dentro de una asociación. Por ejemplo, una Persona puede cumplir distintos roles: Paciente, Profesional, Administrativo o Responsable de pago. En una asociación, el rol aclara desde qué perspectiva participa el concepto.

También puede ocurrir que el mismo tipo de concepto se relacione consigo mismo o aparezca dos veces en una relación. Por ejemplo, una Persona puede ser responsable de otra Persona. En ese caso, roles como responsable y dependiente ayudan a evitar confusión.

10.8 Asociaciones binarias y múltiples

La mayoría de las asociaciones iniciales son binarias, es decir, relacionan dos conceptos. Por ejemplo, Paciente reserva Turno. Sin embargo, algunos vínculos involucran más elementos. Una reserva puede conectar Paciente, Turno, Profesional y Medio de confirmación.

Cuando una relación empieza a tener datos propios, reglas o estados, quizá convenga convertirla en un concepto del dominio. Por ejemplo, Reserva puede dejar de ser solo el verbo entre Paciente y Turno, y convertirse en un concepto con fecha de creación, estado, canal y reglas.

10.9 Asociaciones con información propia

Algunas asociaciones tienen atributos o reglas propias. Por ejemplo, la relación entre Paciente y Turno podría incluir fecha de reserva, canal de reserva, usuario que registró la operación o estado de confirmación. Si esa información es relevante, puede ser una señal de que la asociación debe modelarse como un concepto independiente.

En lugar de decir solo "Paciente reserva Turno", podríamos modelar Reserva como concepto: Paciente realiza Reserva y Reserva corresponde a Turno. Esto permite ubicar mejor reglas, estados e historial.

10.10 Asociaciones y reglas de negocio

Las asociaciones suelen revelar reglas importantes. Si un Paciente reserva Turnos, debemos preguntar cuántos puede reservar, en qué condiciones, con qué anticipación, si puede cancelar, si puede reservar para otra persona o si hay restricciones por especialidad.

Si un Profesional atiende Especialidades, debemos preguntar si puede atender varias, si una especialidad requiere duración distinta, si existen matrículas o permisos, y si la agenda depende de la especialidad seleccionada.

Una asociación no es solo una línea en un diagrama; puede ser la puerta de entrada a varias reglas del dominio.

10.11 Asociaciones derivadas

Algunas asociaciones pueden derivarse de otras. Por ejemplo, si Turno pertenece a Agenda y Agenda pertenece a Profesional, podríamos saber indirectamente qué profesional atiende un turno. En ese caso, quizás no haga falta dibujar una asociación directa entre Turno y Profesional, salvo que aporte claridad o represente una regla específica.

Evitar asociaciones redundantes ayuda a mantener el modelo más simple. Sin embargo, a veces una asociación derivada se muestra porque facilita la lectura. Cuando se hace, conviene aclarar que se obtiene a partir de otros vínculos.

10.12 Asociaciones temporales

Algunas relaciones son válidas solo durante un período. Por ejemplo, un Profesional puede atender una Especialidad durante cierto tiempo, un Paciente puede tener una cobertura médica vigente hasta una fecha o una Agenda puede estar bloqueada por vacaciones durante una semana.

Cuando la vigencia temporal es importante, la asociación necesita más información. Puede requerir fecha de inicio, fecha de fin, estado o eventos asociados. En esos casos, otra vez puede convenir convertir el vínculo en un concepto explícito.

10.13 Tabla de ejemplos

La siguiente tabla muestra asociaciones posibles en un sistema de turnos:

Asociación Lectura Preguntas que genera
Paciente - Turno Paciente reserva Turno. ¿Cuántos turnos activos puede tener? ¿Puede cancelar?
Profesional - Agenda Profesional posee Agenda. ¿Puede tener más de una agenda? ¿La agenda tiene vigencia?
Agenda - Franja horaria Agenda contiene Franja horaria. ¿Cómo se bloquean o liberan franjas?
Profesional - Especialidad Profesional atiende Especialidad. ¿Una especialidad cambia la duración del turno?
Turno - Cancelación Turno puede tener Cancelación. ¿Cuándo se permite cancelar? ¿Qué consecuencias produce?

10.14 Preguntas para validar asociaciones

Estas preguntas ayudan a revisar si una asociación está bien modelada:

  • ¿El vínculo tiene significado para el negocio?
  • ¿Puede leerse como una frase clara del dominio?
  • ¿Qué papel cumple cada concepto en la relación?
  • ¿La asociación tiene reglas propias?
  • ¿La relación tiene datos, estado o historial?
  • ¿La asociación es directa o se deriva de otras relaciones?
  • ¿Los expertos del negocio reconocen esta relación como válida?

10.15 Errores frecuentes

Al modelar asociaciones, suelen aparecer estos errores:

  • Conectar conceptos sin poder explicar qué significa el vínculo.
  • Usar líneas sin nombre cuando la relación no es evidente.
  • Confundir dirección de lectura con dependencia técnica de implementación.
  • No indicar roles cuando el mismo concepto participa con significados distintos.
  • Crear asociaciones redundantes que complican el modelo.
  • Ocultar como simple línea una relación que tiene datos, reglas o estado propio.
  • No validar las asociaciones con ejemplos concretos del dominio.

10.16 Qué debes recordar de este tema

  • Las asociaciones representan vínculos significativos entre conceptos del dominio.
  • Una asociación clara puede leerse como una frase del negocio.
  • Los roles ayudan a entender qué papel cumple cada concepto en la relación.
  • La dirección de lectura mejora la comunicación, pero no define implementación técnica.
  • Si una asociación tiene datos, reglas o estado propio, puede convertirse en un concepto.
  • Algunas asociaciones son derivadas y no siempre conviene dibujarlas como vínculos directos.
  • Las asociaciones deben validarse con expertos, ejemplos y reglas del dominio.

10.17 Conclusión

Las asociaciones permiten que el modelo de dominio muestre cómo se conectan los conceptos importantes del negocio. Nombrarlas bien, leerlas con claridad y revisar sus roles evita modelos ambiguos. Además, cada asociación puede revelar reglas, restricciones, datos e incluso nuevos conceptos del dominio.

En el próximo tema estudiaremos multiplicidad y opcionalidad, dos aspectos esenciales para expresar cantidades, límites y restricciones entre conceptos.