两个外键引用相同的主键

use*_*981 24 sql vb.net asp.net rdbms normalization

可以在一个表中引用两个外键引用其他表的一个主键吗?

EmployeeID是employee表中的主键,在时间表表中两次显示为外键.

很少有管理员用户代表其他员工填写时间表.

在时间表表格字段中,"TimsheetFor"将拥有该项目的员工ID,并且该字段为"EnteredBy"或"FilledBy"的人员将拥有填写此时间表的人员.

以下哪个选项是正确的?

注意:表格仅显示与此问题相关的字段.

在此输入图像描述

Kev*_*mey 21

我会选择1.由于每个外键值将引用相关表中的不同记录,因此在两个外键列引用不同表中的相同主键列是完全正常的.

我确信选项2可以工作,但你基本上会在TIMESHEET_TABLE和之间TIMESHEET_FILLED_BY建立一对一的关系,使得两个表不必要且更难维护.

事实上,如果两个ENTERED_BYTIMESHEET_FOR成对需要,使用选项1更为明智,因为这是自动由数据库和外键执行.

  • 我是SSS,我支持这个答案:) (2认同)

Raa*_*aab 2

是的,这没有问题...您可以在另一个表中使用一个表的主键作为外键两次。