我想创建一个关系数据库,它代表 1)职业生涯中可以为不同球队效力的球员。参与一支球队的特征是球员在该球队的一个或多个时期。每个时间段都有开始日期和结束日期。球员在球队期间的得分、出场次数和失球数仅对守门员有效
我认为我没有正确地描述我的职业生涯。 我知道类必须有自己的独立性或者最多依赖于其他类。此外,时间,即使它与团队无关而仅与参与相关,也应该是正确的,因为参与与团队隐含相关
Career
本身没有问题。确实,职业并不是球员本身,1对1协会做出了这种区分。 独立于 UML,对于数据库级别的实现,虽然表可以合并,但也可能存在将它们分开的充分理由。
但是您可以简化该图,使用与参与(即成员资格)直接的 1 - * 关联:您可以简单地将此关联命名为
▸ career made of
。
这个模型中的问题是
Period
和Time_1
。 它们都是值对象,并且不希望有标识符。 因此,在 UML 中,您应该使它们«DataType»
,同时,多对多关系无助于很好地理解它们应该如何使用。这是一步一步的改进建议:
Period
不只是由start_date
组成,而是由start_date
和end_date
组成。合并两者将进一步简化。▸ career made of
关联的关联类。然后,您可以重命名此关联 career period
,并向关联类添加约束 { periods of a player shall not overlap }
。career period
和 Membership
是否真的是不同的类别。 事实上,会员资格只在特定时期才有意义,绩效指标也不是绝对的,而是指该时期。因此,我建议将 career period
合并到 Membership
,包括建议的约束。Membership
实际上描述了 Player
和 Team
之间的关联。 虽然将 Membership
作为一个独特的类完全可以,但我个人更愿意将其作为 Player
- Team
关联的关联类。