有人告诉我 null 在关系数据库中是邪恶的,这是真的还是只是主观的?
2 回答
我不会说它们是邪恶的,但总的来说是的,如果没有空值,数据管理世界会/会更好。我们今天所知道的 Null 是 SQL 的一个特性,而不是关系模型本身的特性。多年来,将空值引入数据库系统以及由此产生的错误必然使该行业损失了数百万美元。
在这个视频中,我不能说它比 Chris Date 更好。
回答:
我相信黑白答案......是的,关系数据库中的 Null 值很糟糕。一些人(包括高级 DBA)会争辩说,一些 NULL 值对于这个和其他来说是可以的,但这就像说储气罐中的一些水是可以的。是的,从技术上讲,一辆汽车仍然可以运行,尽管水箱里有一些水,但如果可以的话,你不会避免它吗?数据库中的 NULL 值越多,您为报告编写的 SQL 就越多。
如果数据是可选的,那么业务模型显然“不需要”它,因此您最好将其排除在外或强制执行它以便必须捕获它。
推荐
对于寻找此问题和类似问题答案的个人,我不推荐 《凡人数据库设计:足够强大的第二版》。它是由一位软件架构师推荐给我的,我还没有遇到任何推荐其他东西的人。为了以防万一,我实际上买了两本。
还有一个更新的《凡人数据库设计》:同一作者的第三版。我还没有买这个,所以我不能说更好或更坏。
个人注意:就本问答“主要基于意见”而言,请记住,没有相反逻辑证据的意见根本不是意见——这是事实。如果另一个 SSRS 或 Crystal Reports 分析师/开发人员来到这里并说“NULL 值根本没有问题”,那么我将删除我的答案。