2009-06-08 64 views

回答

0

是,一致性
保持每个人都在同一页上是重要的,这将确保您的开发者不会在生产得到意想不到的价值。

我认为这是一个好主意。

3

如果您需要所有NULL列的DEFAULT值,则可以将它们全部设置为NOT NULL!

+0

对于某些商业案例来说,尽管列有默认值,但空值仍然是合法值吗? – 2010-04-09 04:01:17

+1

可以将NULL置于具有缺省值的可空列中。我会想象,在大多数情况下,这将被视为一个错误(忘记使列不为空)。开发人员会说“哎呀,我以为我在列上有一个默认值,为什么我有那么多的空值?”只有在不指定插入中的列时,或者如果指定它并传入DEFAULT关键字,才会使用默认值。然而,生意是一件有趣的事情,所以我猜想任何疯狂的要求都是可能的。用户说我希望该字段默认为零,但也有时可能是未知的。 – 2010-04-09 11:13:57

1

归因于它们涉及的三个值逻辑,空值通常是混淆的来源。例如,查询...

select * from employee where job != 'MANAGER' 

...可能会返回所有不是经理的员工。然而,当然,如果JOB可以为空,那么这个查询将不会返回JOB为空的雇员。

这可能是这是默认值策略背后的基本原理。

1

指定默认值只会改变问题,因为基本上这些默认值与空值具有相同的“含义”,因此您将面临要求在代码中包含特殊外壳来处理“特殊含义”那些“特殊价值”。

0

@TonyAndrews:

......可以预料到返回谁不是经理的所有员工。然而,当然,如果JOB可以为空,那么这个查询将不会返回JOB为空的雇员。这可能是这是默认值策略背后的基本原理....

NULL是为了处理缺失值而发明的, 您正在要求DBMS返回哪些作业不是'经理'的行;这确实意味着不会将我的工作回报给我。如果你想要失业,那就是另外一个问题。

想象一下,可能有些经理在那里他们的工作领域是NULL(缺少,没有输入),所以如果数据库返回它们,查询的结果将是绝对错误的!

回到主要问题,我认为如果一个字段是NULL允许它应该在NULL的情况下,如果缺少值,否则如果该字段永远不会缺少值(或始终需要默认值)只是使它不为NULL默认值。这是基于特定条件下的业务逻辑。