我记得读过这篇关于数据库设计的文章,我还记得它说你应该有NOT NULL的字段属性.我不记得为什么会这样.
我可以想到的是,作为应用程序开发人员,您不必测试NULL和可能不存在的数据值(例如,字符串的空字符串).
但是,对于日期,日期时间和时间(sql Server 2008),您会怎么做?你必须使用一些历史或最低限度的日期.
有什么想法吗?
解决方法
我认为这个问题措辞不当,因为措辞意味着你已经确定NULL很糟糕.也许你的意思是“我们应该允许NULL吗?”
无论如何,这是我的看法:我认为NULL是一件好事.当你因为“NULL不好”或“NULL很难”而开始阻止NULL时,就会开始编写数据.例如,如果你不知道我的出生日期怎么办?在你知道之前,你打算把什么放在专栏中?如果你有很多反对空的人,你将进入1900-01-01.现在我将被安置在老年病房,可能会接到我当地新闻台的电话,祝贺我的长寿,告诉我生活这么长寿的秘密等等.
如果可以输入一行而你可能不知道列的值,我认为NULL比选择一些任意标记值来表示它是未知的事实更有意义 – 其他人将会必须已经知道,逆向工程,或询问周围的问题.
但是有一个平衡 – 数据模型中的每一列都不应该是可空的.表单上通常有可选字段,或者在创建行时不会收集的信息.但这并不意味着您可以推迟填充所有数据.