外键约束的“特殊情况”记录

时间:2010-03-16 23:20:18

标签: mysql

假设我有一个mysql表,名为foo,外键option_id约束到option表。当我创建foo记录时,用户可能已经或可能没有选择选项,并且“无选项”是可行的选择。区分“null”(即用户尚未做出选择)和“无选项”(即用户选择“无选项”)的最佳方法是什么?

现在,我的计划是在option表中插入一条特殊记录。让我们说最终的id为227(此表此时已有多个记录,因此'1'不可用)。我不需要在数据库级别访问此记录,它只能作为foo表中的外键可以引用的占位符。

因此,当我创建用户选择“无选项”的'foo'记录时,我只是在代码库中硬编码'227'?硬编码的id似乎很草率,并且随着代码保持不变而留下了出错的空间,但我不确定另一种方法。

1 个答案:

答案 0 :(得分:0)

你真的必须区分“无选项”和“尚未做出选择”吗?

如果是这样,你可以在'foo'表“option_selected”中添加一个额外的列,如果他们选择了一个选项则为true,否则为false。这样,你调用tell来判断option_id的NULL是否意味着“没有选项”或“尚未选择”。

相关问题