类与自身关联的表示:Tutor类递归关联使用可行性咨询
关于Tutor类递归关联设计的解答
首先可以明确:递归关联(Recursive Association)完全适用于表示该场景的关系,你判断原有设计存在错误是合理的。
原有设计的常见问题
这类递归关联的错误设计大多集中在角色定义、多重度设置两个维度:
- 没有为关联的两端设置明确的角色区分,无法清晰分辨哪一端对应「课程协调员」实例,哪一端对应「被协调的普通导师」实例
- 多重度设置不符合业务逻辑:比如错误给协调员端设置了多实例的多重度,忽略了普通导师通常仅归属一名协调员管理的规则
修正后的实现方案
你可以按以下规则调整设计即可:
- 为递归关联的两端分别定义角色名:
- 指向协调员实例的一端角色定义为
courseCoordinator - 指向被协调导师实例的一端角色定义为
supervisedTutor
- 指向协调员实例的一端角色定义为
- 按实际业务逻辑设置多重度:
courseCoordinator端多重度设为0..1:代表一名导师可以没有对接的课程协调员,最多仅归属一名协调员管理supervisedTutor端多重度设为0..*:代表一名担任协调员的导师可以不管理其他导师,也可以同时管理多名普通导师
如果你的业务规则要求所有导师必须有对应协调员、协调员必须管理至少1名导师,也可以对应调整多重度为1和1..*即可。
内容的提问来源于stack exchange,提问作者om1999
相关产品推荐
相关产品推荐

