在mysql中布尔值应该是非NULL吗?

时间:2014-05-28 18:02:35

标签: mysql database-design

在设计我的数据库时,我意识到我将一些布尔值保留为NOT NULL而其他默认值为NULL。什么时候允许布尔值可以为空的经验法则是什么?由于我所拥有的布尔都是_SETETHING,我认为它们永远不应该为NULL,因为它们或者被归类为SOMETHING或者没有。

3 个答案:

答案 0 :(得分:3)

如果您没有指定NOT NULL,那么默认情况下,SQL会将所有列视为可为空,这很可惜。可以说,属性更常见的是需要一个值而不是一个null,所以如果SQL被定义为默认情况下将属性视为NOT NULL而不是相反,那就太好了。

在您的情况下,我认为该属性应为NOT NULL,除非您需要表示"未指定"或者"不适用"这是NULL的用途。

我们无法从您的说明中回答这些问题。这取决于项目的用途和要求。

甚至有可能你的某些布尔值应该是可以为空的,而其他布尔值应该是NOT NULL,在同一个数据库中!

答案 1 :(得分:2)

从应用程序的角度决定列是否可以为NULL是有意义的。

当一些属性可以用双态变量编码时,NULL非常合适,但在某些情况下,该值不适用。

答案 2 :(得分:1)

NULL布尔值有三个可能的值:truefalsenullNOT NULL布尔值只有两个truefalse。您的应用程序逻辑必须足以告诉您哪个是正确的选择。