包含所有值的下拉选项,以FK格式保存到数据库

时间:2011-09-22 22:20:30

标签: asp.net foreign-keys

假设我有一个表“产品”,其中包含3个产品ID:1,2和3。

然后在我的asp.net应用程序中,我有一个下拉列表来选择带有这些选项的产品:

  • 产品1(价值1)
  • 产品2(价值2)
  • 产品3(价值3)
  • 任何产品(价值为0)

如果选择“任何产品”,我将返回与3种产品中的任何一种相匹配的SQL查询。

另一方面,我也必须保存这些搜索。

由于“搜索”表格的产品ID为FK,因此问题为:

是否可以在ProductID中保存“Any product”的搜索值为NULL?因为它是FK而且我一直在读FK不应该为空。

我不确定是否有更好的方法(我不想在产品表中输入名为“Any product”的新产品,对我来说没有意义)。

非常感谢。

2 个答案:

答案 0 :(得分:0)

你可以像你说的那样做,但是当你说搜索表中的productid是一个外键时,你真的对外键有一个约束吗?因为如果这样做,您将无法输入产品表中不存在的null(或任何其他值)。

例如,您可以创建一个Id -1的虚拟产品,当您从表中选择产品时,您只需忽略Id -1的产品。

答案 1 :(得分:0)

当然,将ProductID字段设置为null并不是一个好主意。将外键设置为null通常表示已删除或更新引用的字段。

了解搜索表的目的究竟是什么有助于找到问题的解决方案。但我的猜测是你应该在你的代码中处理这种情况,而不是在数据库中。