【问题标题】:Is it possible to have two links (association) between two classes?两个类之间是否可以有两个链接(关联)?
【发布时间】:2014-05-09 16:50:48
【问题描述】:
问题标题有点混乱。我有一个班级工作人员和一个班级项目。一名或多名员工正在从事一个或多个项目。在这个关联中,我只有一个链接,从具有 * 多重性的员工类到具有*多重性的项目类。现在有另一个实现。每个项目只有一名经理,在员工班!
我的问题是,最好的方法是在项目类中有一个属性管理器,它是员工 ID 的外键,或者有另一个从 STAFF 类到项目类的链接,具有 1-1 的多重性?是否有可能必须在两个班级之间建立联系?最后的想法是在这些类之间建立一个关联类,具有项目经理和项目ID这两个字段?
【问题讨论】:
标签:
mysql
sql
oracle
database-design
data-modeling
【解决方案1】:
如果一个项目只有一个经理,那么对其进行建模的适当方法是在 Projects 表中有一个名为 ManagerId 的列,并具有对另一个表的适当外键引用。如果需要管理器,则将其声明为NOT NULL。
如果一个项目可能有多个经理,那么您需要一个关联/联结表来记录此信息。当你只需要一名经理时这样做似乎是不必要的复杂化。而且,对任意数量的事物实施约束通常比仅处理 0 或 1 更困难。
上述情况的一个例外是经理可以随着时间的推移而改变。然后你会想要另一个表格,其中包含每个经理在位的有效日期和结束日期。