Después de identificar conceptos y asociaciones, necesitamos expresar cuántas instancias pueden participar en cada relación. Esa información se conoce como multiplicidad. Además, debemos indicar si una relación es obligatoria u opcional, es decir, si puede existir cero, una o varias instancias relacionadas.
La multiplicidad ayuda a descubrir reglas importantes del negocio. No es lo mismo decir que un Paciente puede tener muchos Turnos que decir que debe tener exactamente uno. Tampoco es lo mismo decir que un Profesional tiene una Agenda que decir que puede tener varias agendas con vigencias distintas.
La multiplicidad indica cuántas instancias de un concepto pueden estar asociadas con una instancia de otro concepto. En UML y en modelos conceptuales se usan expresiones como 1, 0..1, 0..*, 1..* o rangos más específicos.
Por ejemplo, si decimos que una Agenda contiene muchas Franjas horarias, estamos expresando una multiplicidad. Si decimos que un Turno corresponde a una sola Franja horaria, también estamos expresando una restricción de cantidad.
Las multiplicidades más comunes son:
Estas notaciones deben usarse con cuidado. Si el equipo no sabe cuál es la multiplicidad real, conviene preguntar y validar con ejemplos.
La opcionalidad indica si una relación puede no existir. Una multiplicidad que empieza en 0 expresa opcionalidad. Por ejemplo, 0..1 significa que puede no haber relación o puede haber una. 0..* significa que puede no haber ninguna o puede haber muchas.
En un sistema de turnos, un Turno puede tener 0..1 Cancelación: si nunca fue cancelado, no tiene cancelación; si fue cancelado, tiene una. En cambio, un Turno reservado probablemente debe tener exactamente un Paciente asociado.
Una asociación uno a uno indica que una instancia se relaciona con exactamente una instancia del otro concepto. Por ejemplo, si el dominio establece que cada Profesional tiene una única Matrícula profesional activa y cada Matrícula pertenece a un único Profesional, se podría modelar una relación 1 a 1.
Las relaciones uno a uno deben revisarse con cuidado, porque a veces esconden un concepto que podría integrarse como atributo u objeto de valor. Otras veces son correctas porque ambos conceptos tienen identidad, reglas o ciclos de vida diferentes.
Una asociación uno a muchos indica que una instancia de un concepto puede relacionarse con varias instancias de otro. Por ejemplo, un Paciente puede tener muchos Turnos a lo largo del tiempo. Un Profesional puede tener muchas Franjas horarias disponibles en su agenda.
La pregunta importante es si la cantidad puede ser cero, una o muchas. Un Paciente recién registrado podría no tener turnos todavía. Por eso, desde Paciente hacia Turno podría ser 0..*. En cambio, cada Turno reservado puede requerir exactamente un Paciente.
Una asociación muchos a muchos indica que muchas instancias de un concepto pueden relacionarse con muchas instancias de otro. Por ejemplo, un Profesional puede atender varias Especialidades y una Especialidad puede ser atendida por varios Profesionales.
Este tipo de relación suele requerir análisis adicional. Si la asociación tiene información propia, como fecha de habilitación, duración habitual del turno o estado de autorización, puede convenir modelar un concepto intermedio, por ejemplo Habilitación profesional o Prestación.
Algunas reglas del negocio establecen límites concretos. Por ejemplo, una promoción puede requerir al menos dos productos y como máximo cinco. Una agenda puede permitir como máximo cierta cantidad de sobreturnos por día. Un paciente puede tener como máximo un turno pendiente por especialidad.
Cuando existen límites de cantidad, el modelo debe registrarlos. A veces se expresan con multiplicidades, y otras veces como reglas de negocio adicionales porque dependen de condiciones, estados o períodos.
En algunos dominios, la multiplicidad depende del estado o del contexto. Un Turno disponible puede no tener Paciente, pero un Turno reservado debe tener uno. Una Agenda en borrador puede no tener franjas, pero una Agenda publicada debe tener al menos una. Un Pedido creado puede no tener pago, pero un Pedido confirmado puede requerirlo.
Cuando la cantidad permitida depende del estado, la multiplicidad del diagrama puede no ser suficiente. Conviene agregar reglas textuales o diagramas de estados para aclararlo.
Muchas reglas de negocio son reglas de multiplicidad. "Un paciente no puede tener más de un turno pendiente para la misma especialidad" es una restricción de cantidad. "Cada turno reservado debe tener un paciente" también lo es. "Una factura debe tener al menos un ítem" es otra regla típica.
Estas reglas deben validarse con ejemplos. Puede haber excepciones, como turnos grupales, reservas familiares, sobreturnos o profesionales con agendas múltiples.
La siguiente tabla muestra multiplicidades posibles:
| Relación | Multiplicidad posible | Interpretación |
|---|---|---|
| Paciente - Turno | Paciente 0..* Turnos; Turno 0..1 o 1 Paciente | Un paciente puede no tener turnos; un turno reservado tiene paciente. |
| Profesional - Agenda | Profesional 1..* Agendas | Un profesional puede tener una o varias agendas según período o sede. |
| Agenda - Franja horaria | Agenda 1..* Franjas horarias | Una agenda publicada debe tener al menos una franja. |
| Turno - Cancelación | Turno 0..1 Cancelación | Un turno puede no haberse cancelado o tener una cancelación registrada. |
| Profesional - Especialidad | Muchos a muchos | Un profesional puede atender varias especialidades y viceversa. |
Para descubrir multiplicidades conviene preguntar por cantidades concretas:
Las multiplicidades se validan mejor con ejemplos. Si el modelo dice que un Profesional tiene una sola Agenda, podemos preguntar: ¿qué ocurre si atiende en dos sedes?, ¿qué pasa si cambia de horario por temporada?, ¿puede tener agenda de consultas y agenda de estudios?, ¿existen agendas históricas?
Los contraejemplos ayudan a descubrir multiplicidades incorrectas. Si encontramos un caso válido que contradice la cantidad indicada, el modelo debe ajustarse o la excepción debe documentarse como regla.
Al modelar multiplicidad y opcionalidad, suelen aparecer estos errores:
La multiplicidad y la opcionalidad hacen que las asociaciones del modelo de dominio sean más precisas. Permiten expresar si una relación es obligatoria, opcional, única, múltiple o limitada por reglas específicas. Sin esta información, el modelo puede parecer correcto pero dejar abiertas dudas importantes.
En el próximo tema estudiaremos agregación y composición conceptual, dos formas de analizar relaciones entre un todo y sus partes.