这个类图是什么意思?自反关联的类图使用了实线和箭头,但这里用空心菱形代替。和递归有关系吗?这个类图会生成什么?如果能举个例子就最好了。另外这个递归关系应该是一对多,如果存储数据库怎么建表。
这是什么意思?
这个类图意味着Unit
can与其他几个实例相关联Unit
:
-
空心聚合钻石只是一个“建模安慰剂”:它不会改变图表的含义,而只是表明关联代表某种分组。
-
A 反身联想意味着它将一个类与其自身关联起来。与递归没有直接关系,因为这个答案解释了.
-
尽管如此,递归的算法是探索此类关联的良好候选者(例如,找到Unit
与特定实例间接相关)。在数据库环境中,有时使用术语“递归关联”而不是“自反”,因为递归连接用于实现它们的。
请注意,1
也许应该是0..1
因为1
恰好意味着 1,这意味着向上导航时有无限循环。
它看起来怎样?
由于它是一对多关联,因此您可以将其想象为一片树林:每个Unit
实例可以是某些分支的开始并且几棵树可能共享公共分支(废话:最多有一个父树).
生成了什么/如何实现?
Let's add some roles to better speak about the ends of the aggregation:
代码生成取决于工具和目标语言。但是具有聚合的模型和具有简单关联的模型很可能会生成完全相同的代码,例如:
class Unit { // Java
private String id;
private Unit[] child; // java objects are sharable by default
private Unit parent; // unless we make it non navigable in that direction
...
}
在 RDBMS 中,该表看起来非常相似。关系模型允许仅使用一列进行双向链接:
ID (PK) | Parent (FK, nullable)
----------------------------------
w |
u |
u1 | u
u2 | u
u3 | u
u21 | u2
u31 | u3
u32 | u3
v |
v2 | v
A 自连接或递归 CTE将允许利用自反关联来查询数据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)