外键复制?

时间:2011-04-04 19:04:41

标签: database database-design foreign-keys foreign-key-relationship

我希望这可能是一个简单的答案,但似乎是一个难以理解的问题。

如果你的外键基本上在一个表中出现两次,来自两个复合键那么FK那么必须定义两次(作为两个独立的属性存在)?

以下是一些简单模型,可视化我的要求。防爆。图1示出了Table1Id的FK作为单个属性。防爆。图2显示了Table1Id的FK(标识为Table1Id_FKTable2& Table1Id_FKTable3)作为两个不同的属性。

根据您想要完成的内容,这两种模型都有效吗? enter image description here

3 个答案:

答案 0 :(得分:3)

通常,table1ID_FKTable2更好地称为Table1相对于Table4播放的“角色”。

同样地,table1ID_FKTable3是Table1与Table4相关的不同“角色”。

角色的想法很普遍。两名员工属于同一家公司,但可能有不同的角色,一名是董事会成员,另一名是兼职,每小时。

答案 1 :(得分:0)

我试图理解你的问题,但是如果Table2的主键是Table1Id和Table2Id的组合,那么你需要使用两个字段从Table4创建一个外键。表3也是如此。

ALTER TABLE Table4 ADD constraint fk_tab2 foreign key references Table2(Table1Id, Table2Id)
ALTER TABLE Table4 ADD constraint fk_tab3 foreign key references Table3(Table1Id, Table3Id)

答案 2 :(得分:0)

您的图纸不会“显示您的要求”,因为您的图纸似乎根本不包含任何复合键。

但是如果你的问题是(类似的话)“可以将table4中的一个单一属性声明为外键 BOTH 到table2和table3吗?”,那么答案是肯定的。

如果你在整个地方使用ID字段,它是不可能的,如果它按照你想要的方式工作,但是关系模型甚至SQL标准都不能阻止它。