我的数据库中有这些规格表:
问题在这里:
在每一行中只会填充一个FK字段。 什么是最佳解决方案A或B?
A-为我的桌子定义3 FK
B-将一个字段定义为FK_TYPE,将一个字段定义为DEMAND_FK,并使用FK_TYPE检查结果
答案 0 :(得分:2)
选项A - 如果您必须拥有此设计,则每个外键都需要一个单独的列。没有(标准)方法来定义“条件”外键。
如果您的系统支持检查约束,请包含检查约束,以便其中一个FK列不为空。如果它不支持检查约束,请添加强制执行相同检查的触发器。
答案 1 :(得分:1)
如果我没错,在任何关系数据库中都无法使用B.外键只能引用表的一个主键。如果使用B,则必须在应用程序级别添加约束。否则使用A.