You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UML类图Person与Reward关联及基数约束设计问询

解决方案:基于UML的奖励与人员关联设计

方案一:使用关联类实现

  • 新增关联类PersonRewardYear,核心属性为year,用来关联Person和Reward
  • 配置关联基数与约束:
    • Person ↔ PersonRewardYear:基数设为0..1(按year维度,每人每年最多关联1条记录)
    • PersonRewardYear ↔ Reward:基数设为1..1(每条关联记录对应唯一奖励)
    • 针对奖励类型的约束:
      • 当Reward.type = single时,同一year下,关联该奖励的PersonRewardYear记录只能有1条,可在UML中用约束标注:{ for all r: Reward | r.type = single → count(pr: PersonRewardYear | pr.reward = r ∧ pr.year = y) ≤ 1 ∀ y: Year }
      • 当Reward.type = team时,同一year下,关联该奖励的PersonRewardYear记录无数量上限

方案二:特化Reward类实现

  • 将Reward抽象为父类,移除type属性,特化出两个子类:
    • SingleReward:代表单人型奖励
    • TeamReward:代表团队型奖励
  • 分别设计关联关系:
    • Person与SingleReward通过关联类SingleRewardAssignment(含year属性)关联:
      • Person → SingleRewardAssignment:0..1/year(每人每年最多获得1个单人奖)
      • SingleReward → SingleRewardAssignment:0..1/year(每个单人奖每年仅能授予1人)
    • Person与TeamReward通过关联类TeamRewardAssignment(含year属性)关联:
      • Person → TeamRewardAssignment:0..1/year(每人每年最多获得1个团队奖)
      • TeamReward → TeamRewardAssignment:0..*/year(每个团队奖每年可授予多人)

实践建议

  • 关联类方案适合奖励类型后续可能新增的场景,但需在业务逻辑或数据库层面额外校验单人奖的年度唯一性
  • 特化方案更贴合UML单一职责原则,约束逻辑更直观,后续扩展不同奖励规则的成本更低

内容的提问来源于stack exchange,提问作者dok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 13:42:42