假设我有一个mysql表,名为foo
,外键option_id
约束到option
表。当我创建foo
记录时,用户可能已经或可能没有选择选项,并且“无选项”是可行的选择。区分“null”(即用户尚未做出选择)和“无选项”(即用户选择“无选项”)的最佳方法是什么?
现在,我的计划是在option
表中插入一条特殊记录。让我们说最终的id为227(此表此时已有多个记录,因此'1'不可用)。我不需要在数据库级别访问此记录,它只能作为foo
表中的外键可以引用的占位符。
因此,当我创建用户选择“无选项”的'foo'记录时,我只是在代码库中硬编码'227'?硬编码的id似乎很草率,并且随着代码保持不变而留下了出错的空间,但我不确定另一种方法。
答案 0 :(得分:0)
你真的必须区分“无选项”和“尚未做出选择”吗?
如果是这样,你可以在'foo'表“option_selected”中添加一个额外的列,如果他们选择了一个选项则为true,否则为false。这样,你调用tell来判断option_id的NULL是否意味着“没有选项”或“尚未选择”。