1

在我们的数据库系统中,我们有学生和人事字段。他们有 PersonnelCardId 和 StudentCardId,我们将它们设为主键。然后我们有一个持有 cardID 的支付设备,我们声明它是一个外键。在这种情况下我们无法插入一行,经过研究我们了解到我们不能将两个主键引用到一个外键。那么我们该如何解决这种情况呢?谢谢。

4

1 回答 1

5

正如您所说,外键不能同时引用两个不同的表。使用您当前的架构,cardID外键只能引用PersonnelCardIdStudentCardId...

如果我理解正确,您的架构类似于:

PersonnelCard
----------------
PersonnelCardID - PK
PersonnelCardFields


StudentCard
----------------
StudentCardID - PK
StudentCardFields


PaymentDevice
----------------
PaymentDeviceID - PK
CardID - FK

要解决这个问题,您必须找到一种方法来组合PersonnelCardStudentCard表......

Card
----------------
CardID - PK
CardType - (Personnel or Student)
CardFields

表上的 FKPaymentDevice现在可以引用新Card表中的 PK。

于 2012-12-21T15:55:43.477 回答