UML设计疑问:Level属性应置于EmployeeSkill关联类还是Skill类?
UML建模:技能等级(Level)属性的放置位置分析
结论:Level属性必须放在EmployeeSkill关联类中
原因如下:
- 技能(
Skill类)的属性应是技能的固有特性,比如技能名称、描述、所属技术领域等,这些属性不随持有者变化。而等级是特定员工对该技能的掌握程度,属于员工与技能之间的关联特性,并非技能本身的属性。 - 结合你的实例:Jack的Java技能等级是beginner,若另一位员工的Java技能等级是advanced,若将Level放在
Skill类中,会出现同一个Skill实例对应多个等级的矛盾,完全违背数据模型的逻辑一致性。 - 多对多关联引入关联类的核心目的,就是存储依赖于两个实体实例组合的关联属性。Level属性恰好符合这个场景——它不属于单独的
Employee,也不属于单独的Skill,而是依附于“某员工掌握某技能”这一特定关系存在。
若错误将Level放入Skill类,会导致无法区分不同员工对同一技能的不同掌握程度,直接破坏模型的业务适配性。
内容的提问来源于stack exchange,提问作者Michael Efraimidis
相关产品推荐
相关产品推荐

