我的MySQL数据库有仔细定义的字段。如果某些字段有可能是未知的,则允许空值。
我正在编写一个基于web的CMS来处理上述数据库中的数据。显然,来自HTML表单的post数组从不包含空值,只包含空字符串。
我不想通过添加"NULL复选框“或类似的东西来混淆CMS的用户,但是我不能从post数组中判断一个字段应该是null还是空的。
对于允许空值的字段,我应该在保存时将所有空字符串转换为空值吗?
对于这类难题,有哪些好的实践?
发布于 2010-10-09 11:01:26
这是一个棘手的问题。当然,用户没有办法知道他们是要插入空字符串还是什么都不要。所以答案真的取决于你。是否允许用户输入空字符串?它这样做有什么意义吗?如果空字符串表示的是空字符串没有的含义,并且定义良好,那么就允许这两种方式。
如果它们之间没有区别,那么选择一个并坚持使用它。我个人不明白为什么你需要保持这样的空字符串,这只会让事情变得更加混乱。只需使用NULL表示缺少数据即可。
现在就做出你的决定,记录下来并坚持下去。
发布于 2010-10-09 11:25:20
你真的想用它棘手的three-value logic来处理真正的NULL吗?
根据我的经验,您很少真正想要NULL带来的显式不确定性。为用户不关心填写的值存储一个空字符串通常更实用。然后,您可以继续执行WHERE t.field<>'x'或WHERE t0.field=t1.field之类的搜索,而不必担心当其中一个或两个都为空时,这会对布尔逻辑造成什么影响。
如果您已经有了一个依赖于null的不确定性的工作数据库,并且这是您的需求的固有部分,那么好吧,坚持使用null (在这种情况下,您可能不得不将可空字段中的空用户输入转换为null,因为没有最终用户能够理解nothing和null之间的概念差异)。
但就我个人而言,我仍然只对可选的外键引用使用空值(当不使用单独的连接表时)。
https://stackoverflow.com/questions/3895502
复制相似问题