如何避免与复合关系的冗余关联

时间:2014-08-05 19:30:13

标签: uml data-modeling class-diagram

我有两个对象(A& B)之间的复合关系(A由许多B组成)。现在另一个类(C)与类' B'具有一对多的关联关系。我希望能够从类(C)中检索类(A)的所有实例。 如何在不创建冗余关联的情况下执行此操作?因为' C'基本上有一个' Bs'我无法反复询问他们所说的“你的A' A'并最终返回一个' A'到' C'。

我真的希望那里有人理解这一点并且没有发现它完全令人困惑!

由于

更新:
数据集具有已定义变量的列表。活动可以从每个数据集中选择变量子集并为其提供一些属性,因此使用关联类。现在,如果我希望能够从Activity实例中检索它注册的数据集,我如何在UML和对象实现中实现这一点?

2 个答案:

答案 0 :(得分:0)

根据你的任务,从所有C中取出所有B是不可能的。因为没有句子表明任何B属于某些C.

相反,由于A有B的成分(注意,A不是成分,A的H成分为B,A也可以有其他东西),任何B必须属于某个A对象,你可以很容易地从所有A中获得所有B。仅将B列表创建为不具有乘法值的集合。

但即使关联B-A包含B-> A连接,也无法从B&B获得所有A。因为有些A可能是EMPTY。你永远不会联系到他们。来自B' s。

所以,出于两个重要原因,你不能从C&C中取出所有A.没有冗余的关联会有所帮助。

关于"更新"之后的问题,

  • 要从变量中获取所有内容,请使用

数据集< ----变量--->活动//此变体最容易添加关联。

  • 从活动中获取连接数据集

数据集< ---变量< -----活动

但请注意,它没有更新,这是不同的问题。

答案 1 :(得分:0)

我认为你的图表看起来像这样:

enter image description here

如果C具有对B的引用,并且B具有对A的引用,则从C导航到A应该没有问题。不需要任何其他冗余关系。