创建一个要求开发人员为所有空列指定默认值的策略有什么好处吗?
5 回答
如果您需要所有 NULL 列的 DEFAULT 值,您可以将它们全部设为 NOT NULL!
Null 通常是混淆的来源,因为它们涉及三个值逻辑。例如,查询...
select * from employee where job != 'MANAGER'
... 可能会返回所有不是经理的员工。但是,当然,如果 JOB 可以为空,那么此查询将不会返回 JOB 为空的员工。
这可能是默认值策略背后的基本原理。
分配默认值只会改变问题,因为本质上这些默认值与空值具有相同的“含义”,因此您需要在代码中包含特殊大小写以处理那些“特殊”的“特殊含义”价值观”。
是的,保持每个人都在同一页面上的一致性
很重要,这将确保您的开发人员不会在生产中获得意想不到的价值。
我认为这是个好主意。
@托尼安德鲁斯:
... 可能会返回所有不是经理的员工。但是,当然,如果 JOB 可以为空,那么此查询将不会返回 JOB 为空的员工。这可能是默认值策略背后的基本原理......
NULL 是为了处理缺失值而发明的,因此对于您的查询,在作业字段中不返回具有空值的行是完全合理的!您要求 DBMS 返回工作不是“经理”的行;这确实意味着不把那些工作不详的人还给我。如果你也想丢掉工作,那就另当别论了。
试想一下,可能有一些经理在那里他们的工作字段为 NULL(缺少,尚未输入),所以如果数据库返回它们,查询的结果将是绝对错误的!
回到主要问题,我认为如果一个字段是 NULL 允许它在缺失值的情况下应该有 NULL,否则如果该字段从来没有缺失值(或总是需要默认值),只需使用默认值将其设为 NOT NULL。这是基于特定条件下的业务逻辑。