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

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

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

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

有什么想法吗?

解决方法

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

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

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

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

相关文章

(一)日志传送架构 (1.1)相关服务器 主服务器 :用于生产的服务器,上面运行这生产SQL Server数据库...
(一)事故背景 最近在SQL Server 2012生产数据库上配置完事物复制(发布订阅)后,生产数据库业务出现了...
(一)测试目的 目前公司使用的SQL SERVER 2012高可用环境为主备模式,其中主库可执行读写操作,备库既...
(一)背景个人在使用sql server时,用到了sql server的发布订阅来做主从同步,类似MySQL的异步复制。在...
UNION和OR谓词 找出 product 和 product2 中售价高于 500 的商品的基本信息. select * from product wh...
datawhale组队学习task03