sql - 我应该在数据库模式中允许空值吗?

标签 sql database database-design

我知道从逻辑上讲,在某些情况下 NULL 值在数据库架构中有意义,例如,如果未指定某些值。也就是说,在代码中解决 DBNull 问题往往是一件非常痛苦的事情。例如,如果我正在渲染一个 View ,并且我想看到一个字符串,我希望没有任何值是空字符串,而不是“Null”,我讨厌围绕这种情况编写代码。

此外,它使查询更容易。诚然,您可以非常轻松地执行“foo is not null”,但对于初级 SQL 开发人员来说,不能使用“foo != null”是违反直觉的(是的,我知道关闭 ANSI null 的选项等,但这绝对不简单,而且我不喜欢偏离标准)。

在数据库模式中拥有/允许空值有什么好的理由?

最佳答案

允许 NULLS 的最重要原因是没有合理的选择。从逻辑上讲,NULL 值表示“未定义”。由于缺少 NULLS,您最终会尝试在结果未定义的地方指定一个“虚拟”值,然后您将不得不在所有应用程序逻辑中考虑上述“虚拟”值。

我写了一篇关于在数据库中包含 NULL 值的原因的博客文章。你可以找到它here .简而言之,我确实相信 NULL 值是数据库设计的一个组成部分,应该在适当的地方使用。

关于sql - 我应该在数据库模式中允许空值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/965719/

相关文章:

mysql - 从 ERD 生成 SQL - 如何将关系映射到 SQL?

mysql - 实现大学小组学习的数据库方案

mysql - 高写表上的索引不好?

sql - 使用 tSQL 计算一行中不同列的数量

mysql - 有选择地插入到mysql表中

mysql - 在 Perl DBI 中处理大量结果的最有效方法是什么?

Android Firebase 持久化集

database - 如何重新设计这个SQL数据结构?

database - 触发器和存储过程如何在 ER 图中表示?

mysql - 使用 DateTime 函数检查预订日期的订阅