具有表类型列的表的多个外键

时间:2014-07-22 13:56:23

标签: sql database foreign-key-relationship

假设我有这个数据库表:

现金

  • ID(PK)
  • 金额

检查

  • ID(PK)
  • 金额
  • 数字

  • ID(PK)
  • 金额
  • 输入

交易

  • ID(PK)
  • 键入CHECK(类型=> 1并键入< = 2)
  • TypeID

Transaction.Type 会存储什么类型的交易,无论是Cash(1),Check(2)还是Card(3)。 Transaction.TypeID 会存储交易类型的主键;如果 Transaction.Type 为1,则会存储 Cash.ID ,如果存储 Cheque.ID 则为2,如果存储 Card.ID 即可。

如何为 Transaction.TypeID 定义外键约束,以确保现金检查的参照完整性卡表?

我可以为3个父表创建一个计算列,如下所示:

现金

  • ID(PK)
  • 金额
  • TransactionType CHECK(Type = 1)

检查

  • ID(PK)
  • 金额
  • 数字
  • TransactionType CHECK(Type = 2)

  • ID(PK)
  • 金额
  • TransactionType CHECK(Type = 3)

然后使用父表的 ID TransactionType 创建外键。是否有另一种方法可以在不添加新表或显着更改表的架构的情况下执行此操作?

0 个答案:

没有答案