所有空列的默认值

时间:2009-06-08 15:21:04

标签: database-design policy

创建一个要求开发人员为所有空列指定默认值的策略是否有任何优点?

5 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

由于它们涉及三个价值逻辑,空洞通常是混乱的来源。例如,查询...

select * from employee where job != 'MANAGER'

......可能会让所有非经理人员退回。但是,当然,如果JOB可以为null,则此查询不会返回JOB为空的员工。

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

答案 2 :(得分:1)

分配默认值只会改变问题,因为基本上这些默认值带有与空值相同的“含义”,因此您需要在代码中包含特殊外壳以处理“特殊含义”那些“特殊价值”。

答案 3 :(得分:0)

是,一致性
让每个人都在同一页面上非常重要,这将确保您的开发人员不会在生产中获得意外的价值。

我认为这是一个好主意。

答案 4 :(得分:0)

@TonyAndrews:

  

......可能会让所有非经理人员退回。但是,当然,如果JOB可以为null,则此查询不会返回JOB为null的员工。可能这是默认值政策背后的基本原理....

NULL是为了处理缺失值而发明的,因此对于您的查询来说,在作业字段中不返回具有空值的行是完全合理的! 您要求DBMS返回哪些作业不是“经理”的行;它确实意味着不能归还那些工作不明的人。如果你想要失踪的工作,那就是不同的问题。

想象一下,可能有些经理人的工作字段是NULL(缺少,尚未输入),所以如果数据库返回它们,查询的结果将是绝对错误的!

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