在设计我的数据库时,我意识到我将一些布尔值保留为NOT NULL而其他默认值为NULL。什么时候允许布尔值可以为空的经验法则是什么?由于我所拥有的布尔都是_SETETHING,我认为它们永远不应该为NULL,因为它们或者被归类为SOMETHING或者没有。
答案 0 :(得分:3)
如果您没有指定NOT NULL
,那么默认情况下,SQL会将所有列视为可为空,这很可惜。可以说,属性更常见的是需要一个值而不是一个null,所以如果SQL被定义为默认情况下将属性视为NOT NULL
而不是相反,那就太好了。
在您的情况下,我认为该属性应为NOT NULL
,除非您需要表示"未指定"或者"不适用"这是NULL的用途。
我们无法从您的说明中回答这些问题。这取决于项目的用途和要求。
甚至有可能你的某些布尔值应该是可以为空的,而其他布尔值应该是NOT NULL
,在同一个数据库中!
答案 1 :(得分:2)
从应用程序的角度决定列是否可以为NULL是有意义的。
当一些属性可以用双态变量编码时,NULL非常合适,但在某些情况下,该值不适用。
答案 2 :(得分:1)
NULL
布尔值有三个可能的值:true
,false
和null
。 NOT NULL
布尔值只有两个true
和false
。您的应用程序逻辑必须足以告诉您哪个是正确的选择。