问题标题有点令人困惑。我有一个班级员工和一个班级项目。一个或多个员工正在开展一个或多个项目。在这个关联中,我只有一个从带有* multiplicity的工作人员类到带有* multiplicity的项目类的链接。现在有另一个实现。每个项目只有一名经理,属于员工级!
我的问题是,最好的方法是在项目类中有一个属性管理器,它是员工ID的外键,还是从STAFF类到具有1-1多重性的项目类的另一个链接?是否可以在两个班级之间建立联系?最后的想法是在这些类之间有一个关联类,它有两个项目经理和项目ID?
答案 0 :(得分:1)
如果一个项目有一个管理器,那么对它进行建模的一种合适的方法是在ManagerId
表中有一个名为Projects
的列,其中包含对另一个表的适当外键引用。如果需要经理,则会将其声明为NOT NULL
。
如果项目可能有多个经理,那么您需要一个关联/联结表来记录此信息。当你只想要一个经理时这样做似乎是不必要的复杂化。并且,对任意数量的事物强制执行约束通常比仅处理零或一个更困难。
上述情况的一个例外是经理可以随时间变化。然后你会想要另一张表,其中包含每位经理统治的有效日期和结束日期。