您的图表可能有几个问题,因为它表明,对于一个比赛(Wedstrijd
),只有一个Team
(堆肥聚合),这听起来既不具竞争性,也不具娱乐性.此外,它还说,一个俱乐部(Sportsverijn
)最多有一名成员,这与故事中的说法不符.
一旦解决了这些问题(以及其他几个问题),并假设Wedstrijd
涉及两个团队,您可以向模型添加约束以表达这些复杂的条件.
通常,在比赛(Wedstrijd
)和裁判(Scheidsrechter
)之间的关联旁边用花括号表示它们,明文是:{ cannot be referee for a match involving the relevant team }
.这种自然语言的约束是模棱两可的.可以用OCL写一个更正式的表达,类似于:match.team->includes(match.referee.team) == false
当然,表达的细节将取决于你的模型是快照(这里似乎是这样),还是考虑到裁判可能会及时更换球队的事实.这里我有一个替代模型,它避免了复合聚合,并将裁判与球队相关联,并提供了两个约束示例: