我有三种解决方案,我想不出哪一种是最好的。
第一:标题中提到的约束不存在。我相信{xor}在那里无效,仅对于导航到其他类的关联无效,对于传入的关联无效。
第二个:0..1我说不能有一个以上的子实例,但是这违背了泛化的规则,所以没有意义吗?
第三个:我有约束条件,在这种情况下,我认为它更强大,尽管仍然不是设计使然(submittedFoo不会有一个ratingFoo,它只是相反)。如果#2很好,则此解决方案可能会过于复杂。
请注意,我想拥有我的类AcceptedFoo,因为它具有其他关联。如果我丢失了该类,则无法建模那些关联仅对应于接受的实例。一旦我有了Foo和AcceptedFoo,那么我就会遇到有关该帖子的问题。
另一种可能性是将Foo的评级分为自己的概括。但是我不希望将“ AcceptedFoo”的关联与假设的“ AcceptedRating”相关联,这些关联实际上是与“ Foo”类关联。
我会选择解决方案2,但不确定子类中的0..1约束是否有意义。