2

创建一个要求开发人员为所有空列指定默认值的策略有什么好处吗?

4

5 回答 5

3

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

于 2009-06-08T15:33:19.677 回答
1

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

select * from employee where job != 'MANAGER'

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

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

于 2009-06-08T20:11:04.963 回答
1

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

于 2009-06-08T22:46:47.177 回答
0

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

我认为这是个好主意。

于 2009-06-08T15:22:35.890 回答
0

@托尼安德鲁斯:

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

NULL 是为了处理缺失值而发明的,因此对于您的查询,在作业字段中不返回具有空值的行是完全合理的!您要求 DBMS 返回工作不是“经理”的行;这确实意味着不把那些工作不详的人还给我。如果你也想丢掉工作,那就另当别论了。

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

回到主要问题,我认为如果一个字段是 NULL 允许它在缺失值的情况下应该有 NULL,否则如果该字段从来没有缺失值(或总是需要默认值),只需使用默认值将其设为 NOT NULL。这是基于特定条件下的业务逻辑。

于 2010-04-09T03:51:20.000 回答