0

我的数据库中有这些规格的表格:

  • 一PK
  • 3个外键字段
  • 一些统计字段

问题在这里:

在每一行中,只有一个 FK 字段将被填充。最佳解决方案 A 或 B 是什么?

A- 为我的桌子定义 3 个 FK

B- 将一个字段定义为 FK_TYPE,将一个字段定义为 DEMAND_FK,并使用检查 FK_TYPE 的结果

4

2 回答 2

2

选项 A - 如果您必须采用这种设计,则每个外键都需要一个单独的列。没有(标准)方法来定义“条件”外键。

如果您的系统支持检查约束,请包含一个检查约束,以便恰好有一个 FK 列不为空。如果它不支持检查约束,请添加强制执行相同检查的触发器。

于 2013-01-22T08:47:23.613 回答
1

如果我没记错的话,B 不可能出现在任何关系数据库中。外键只能引用一张表的一个主键。如果您使用 B 那么您必须在应用程序级别添加约束。否则使用 A。

于 2013-01-22T08:52:37.617 回答