数据库设计 – 为什么我们不允许NULL?

我记得读过这篇关于数据库设计的文章,我还记得它说你应该有NOT NULL的字段属性.我不记得为什么会这样.

我可以想到的是,作为应用程序开发人员,您不必测试NULL和可能不存在的数据值(例如,字符串的空字符串).

但是,对于日期,日期时间和时间(sql Server 2008),您会怎么做?你必须使用一些历史或最低限度的日期.

有什么想法吗?

解决方法

我认为这个问题措辞不当,因为措辞意味着你已经确定NULL很糟糕.也许你的意思是“我们应该允许NULL吗?”

无论如何,这是我的看法:我认为NULL是一件好事.当你因为“NULL不好”或“NULL很难”而开始阻止NULL时,就会开始编写数据.例如,如果你不知道我的出生日期怎么办?在你知道之前,你打算把什么放在专栏中?如果你有很多反对空的人,你将进入1900-01-01.现在我将被安置在老年病房,可能会接到我当地新闻台的电话,祝贺我的长寿,告诉我生活这么长寿的秘密等等.

如果可以输入一行而你可能不知道列的值,我认为NULL比选择一些任意标记值来表示它是未知的事实更有意义 – 其他人将会必须已经知道,逆向工程,或询问周围的问题.

但是有一个平衡 – 数据模型中的每一列都不应该是可空的.表单上通常有可选字段,或者在创建行时不会收集的信息.但这并不意味着您可以推迟填充所有数据.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...