我希望这可能是一个简单的答案,但似乎是一个难以理解的问题。
如果你的外键基本上在一个表中出现两次,来自两个复合键那么FK那么必须定义两次(作为两个独立的属性存在)?
以下是一些简单模型,可视化我的要求。防爆。图1示出了Table1Id的FK作为单个属性。防爆。图2显示了Table1Id的FK(标识为Table1Id_FKTable2& Table1Id_FKTable3)作为两个不同的属性。
根据您想要完成的内容,这两种模型都有效吗?
答案 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标准都不能阻止它。