在我们的数据库系统中,我们有学生和人事领域。他们有PersonnelCardId和StudentCardId,我们把它们作为主键。然后我们有一个持有cardID的支付设备,我们宣称它是一个外键。在这种情况下我们无法插入行,经过研究后我们了解到我们无法将两个主键引用到外键。那么我们如何解决这种情况呢?谢谢。
答案 0 :(得分:5)
正如您所说,外键不能同时引用两个不同的表。使用您当前的架构,cardID
外键只能引用PersonnelCardId
或StudentCardId
...
如果我理解正确,您的架构看起来像:
PersonnelCard
----------------
PersonnelCardID - PK
PersonnelCardFields
StudentCard
----------------
StudentCardID - PK
StudentCardFields
PaymentDevice
----------------
PaymentDeviceID - PK
CardID - FK
要解决此问题,您必须找到一种方法来合并PersonnelCard
和StudentCard
表...
Card
----------------
CardID - PK
CardType - (Personnel or Student)
CardFields
PaymentDevice
表上的FK现在可以在新Card
表中引用PK。