假设我有一个表“产品”,其中包含3个产品ID:1,2和3。
然后在我的asp.net应用程序中,我有一个下拉列表来选择带有这些选项的产品:
如果选择“任何产品”,我将返回与3种产品中的任何一种相匹配的SQL查询。
另一方面,我也必须保存这些搜索。
由于“搜索”表格的产品ID为FK,因此问题为:
是否可以在ProductID中保存“Any product”的搜索值为NULL?因为它是FK而且我一直在读FK不应该为空。
我不确定是否有更好的方法(我不想在产品表中输入名为“Any product”的新产品,对我来说没有意义)。
非常感谢。
答案 0 :(得分:0)
你可以像你说的那样做,但是当你说搜索表中的productid是一个外键时,你真的对外键有一个约束吗?因为如果这样做,您将无法输入产品表中不存在的null(或任何其他值)。
例如,您可以创建一个Id -1的虚拟产品,当您从表中选择产品时,您只需忽略Id -1的产品。答案 1 :(得分:0)
当然,将ProductID字段设置为null并不是一个好主意。将外键设置为null通常表示已删除或更新引用的字段。
了解搜索表的目的究竟是什么有助于找到问题的解决方案。但我的猜测是你应该在你的代码中处理这种情况,而不是在数据库中。