两个类之间是否可以有两个链接(关联)?

时间:2014-03-30 10:55:24

标签: mysql sql oracle database-design data-modeling

问题标题有点令人困惑。我有一个班级员工和一个班级项目。一个或多个员工正在开展一个或多个项目。在这个关联中,我只有一个从带有* multiplicity的工作人员类到带有* multiplicity的项目类的链接。现在有另一个实现。每个项目只有一名经理,属于员工级!
我的问题是,最好的方法是在项目类中有一个属性管理器,它是员工ID的外键,还是从STAFF类到具有1-1多重性的项目类的另一个链接?是否可以在两个班级之间建立联系?最后的想法是在这些类之间有一个关联类,它有两个项目经理和项目ID?

1 个答案:

答案 0 :(得分:1)

如果一个项目有一个管理器,那么对它进行建模的一种合适的方法是在ManagerId表中有一个名为Projects的列,其中包含对另一个表的适当外键引用。如果需要经理,则会将其声明为NOT NULL

如果项目可能有多个经理,那么您需要一个关联/联结表来记录此信息。当你只想要一个经理时这样做似乎是不必要的复杂化。并且,对任意数量的事物强制执行约束通常比仅处理零或一个更困难。

上述情况的一个例外是经理可以随时间变化。然后你会想要另一张表,其中包含每位经理统治的有效日期和结束日期。