我很难弄清楚在哪里放置Level属性。我希望员工有各种技能,有不同的水平。为此,我建立了许多关系,这是作为一个EmployeeSkill关联类实现的。
上述类的一个例子如下:一个名为Jack的雇员可能具有一种水平初学者的Java技能,而他也可能拥有一种高级级别的C#技能。是将级别保存在EmployeeSkill关联类中还是保存在技能类中?我想它应该在社团课上。
发布于 2022-08-30 08:44:11
关联类的属性?
您对Employee
实例"Jack"
与Skill
实例"Java"
与level
of "beginner"
相关联的叙述表明,该技能与级别无关,并且该级别与给定员工和给定技能的组合有关。
为了准确地模拟这种叙述的语义,level
确实应该是关联类EmployeeSkill
的属性。
会不会是这种技能的一种特性?
将level
移动为Skill
的属性并不是错误的。但是模型的语义不同,因为每个与Employee
关联的Skill
都共享相同的级别。这意味着"Jack"
与"Java"
这样的技能相关联,而与Elementary Java
这样的技能相关联。
这种替代模式还减少了拼命搜索所有知道Neural network
的员工的方便性,而不管级别如何。而且,对于系统来说,不太明显的是,elementary neural network
与advanced neural network expertise
相关,而Advanced java
与Advanced javascript
没有什么关系。
为了具有同样的表达能力,相关但对应于不同层次的技能将需要明确的关联,这将使模型的使用更加繁琐和脆弱。
与你的问题无关的评论
JobCategory
和Country
的属性中重复了Employee
的属性。这是令人困惑的,因为关联已经将类与这些属性的另一组关联起来。您是指用于实现关联和显示db表布局的冗余属性,而不是类吗?如果是这样,应该使用一些定制定型来消除歧义。但是,我建议删除冗余项,并在图表底部发表评论,解释您实现关联的原因。Skill
和SkillCategory
之间的关联的多重性是否是颠倒的(也就是说,一个类别可以有多个技能,而每个技能只与一个类别相关联)?或者你指的是多到多的关联,如果技能属于几个类别的话。<<FK>>
使其成为自定义原型(参见可能首先提到使用原型)。https://stackoverflow.com/questions/73540827
复制