两个表之间可以有两个关系吗?

时间:2011-06-09 22:29:11

标签: mysql database-design

有两个表:雇员和雇员。由于每个雇员被分配给一个雇主,他们之间有1:N关系 - 简单的东西。 但我也希望能够模拟一个情况,即每个EMPLOYER都可以选择他的一个最喜欢的EMPLOYEE(他也可以选择没有)。

我应该这样:
1.在这些表之间添加第二个1:1关系 - 这样EMPLOYER也将包含EMPLOYEE_id_FK。 即使允许两张桌子之间有两种关系吗?
2.添加由两个主要唯一键 - EMPLOYER_ID和EMPLOYEE_ID标识的第三个表FAV?通过这种方式,我确信每个雇主只能拥有一个最喜欢的员工,而且每个员工都可以被一个员工选为最爱 - 这正是我想要的。

这样做的正确方法是什么?

4 个答案:

答案 0 :(得分:1)

我的建议是有四张桌子。一张员工表,一张雇主表,一张表将雇员与雇主联系起来(表示一名雇员不能为两名雇主工作),最后是一张表,将雇主与他们最喜欢的雇员联系起来。

编辑:是的,当然两个表之间可以有两个关系。

答案 1 :(得分:0)

您需要添加一个额外的表(即四个表而不是三个)或在employer2employee表中添加某种is_preferred标志。)

答案 2 :(得分:0)

是的,这是允许的。你可以拥有任意数量的FK。

btw:这是一个1:N的关系,而不是1:1。当我建模时,它们都是N:M关系,因为一个员工可以拥有多个雇主。

答案 3 :(得分:0)

@Nik是对的,你可以有一个有两个雇主的员工,但是,一个员工只能有一个我猜的收藏,所以你只需要FK关系,其中雇主是Employee中FavoriteEmp字段的主要部分。< / p>