作者lashante (杏花天影)
看板Database
标题[问题] 是否避免null值
时间Tue May 21 06:50:28 2013
以前在学 PL/SQL 时,
是由一位有相当不错业界经验的老师教的。
老师有特别提到,设计资料库的栏位时,
若可以不使用 null 值,就应该尽量将该栏位设 NOT NULL,
即使没有资料,也塞一些将来可以辨识出来为无资料的值进去,
ex : '' OR -1 之类的,
他说:「如果你习惯使用 null 值,
将来总有一天你会遇到大问题。」
虽然这样的话感觉很武断,
但我想他的原意应该是,遇到null值时,
在处理table和下SQL指令时,可能总是要做一些额外判断,
若是没处理好,取资料若取出奇怪的结果,就很不好找原因之类的。
* * * * * *
现在刚开始工作不久,在开 table 时,
我遇到一个 entity A,
它关联於 entity B 或 entity C 其中一者,
这三个 entity 分别存放於 TABLE A', B', C',
其 PK 都是由 1开始 increment 1 的正整数。
所以 TABLE A' 就有二个栏位, say: B_id, C_id,
分别对应到 TABLE B' 及 TABLE C' 的PK,
我很自然的,就将 B_id, C_id 设 NOT NULL,
而若 entity a1 是对应到 entity b1,
则 entity a1 的 B_id 栏位 就给对应 entity b1 的pk值,
C_id 栏位就给 -1。
老板後来看到,就觉得我多此一举,
问我干嘛不把 B_id, C_id 允许 NULL,
没对应到的就不写值, 留 null 就好。
其实我因为经验不是很够,无法了解老师当初的深意,
所以也对老板讲不出个什麽东西来,
但是我的老板也好讲话,也没真的很计较这件事,没有叫我改回来。
我想请教较我更有经验的各位,在习惯上,
避免使用 NULL 值是否真会带来什麽优点,
或是反而会有什麽缺点?
若是习惯使用 NULL,是否会像在埋地雷一样?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.221.164
1F:→ chentsungmin:我的习惯也不会留Null,给定预设值定义会比较明确 05/21 10:02
2F:→ chentsungmin:在程式处理上也可以少掉Null的判断,在做Where时也 05/21 10:02
3F:→ chentsungmin:可以比较精确!!! 05/21 10:03
4F:→ fantasyj:依情况而定, null使用的好坏跟index多少也有点关系 05/21 23:29
5F:→ fantasyj:除非设定时确定栏位一定要有值,个人习惯会允许可null 05/21 23:30
6F:推 cleanwind:我会留 NULL ,可还是会塞特定值。 05/22 17:08