标签:
有许多关于数据库设计中NULL的讨论,我个人的设计习惯是,不使用NULL值。
我所设计所有表都是Not Null的字段的,尤其是我主要做数据仓库的表设计。刚开始使用数据库时,就栽了一次。一个Group里面,我要显示成年人有多少个,另外一个地方要显示未成年人有多少个,第三个地方要显示总人数。
N1(成年人数) = select count(*) from mygroup where age>=18; 结果是10
N2(未成年人) = select count(*) from mygorup where age< 18; 结果是12
到第三个地方,为了减少查询,我直接显示了 10+12 = 22 人。后来客户说不对呀,我们有23个人,想了半天才明白怎么回事,后来我经常拿这个考别人。
NULL使用起来很不方便。在各种编程语言中都支持这样的表达式 if(x==null) {...}. 但是在数据库理论中,null比较"奇怪"逻辑.
3 > null, 返回false;
3 < null, 返回false;
3 = null, 返回false.
为了配合数据库的NULL值机制,C#引入了nullable机制,比如:int? v1 = field("age").value; 否则如果age的值是null,无法赋值给v1.
标签:
原文地址:http://www.cnblogs.com/wangjiping/p/5165078.html