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.
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.
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.
Una asociación clara debe poder leerse como una frase del negocio. Por ejemplo:
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.
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.
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.
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.
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.
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.
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.
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.
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? |
Estas preguntas ayudan a revisar si una asociación está bien modelada:
Al modelar asociaciones, suelen aparecer estos errores:
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.