数据库,使用 null 作为三元选项的不良做法?

标签 database database-design null

我以前从未真正使用过 null,我倾向于避免使用它并将其存在于我的数据中。但是我最近设计了这个表(简化):

tblPeopleWhoNeedToCastVotes
User |  hasVotedYes

在这种情况下,hasVotedYes 可以为 null、true 或 false。 Null 表示他们尚未投票(有用信息)。

这是不好的做法还是好的?

最佳答案

这正是 NULL 的真正用途 - 数据不可用的地方。来自 Wikipedia :

Null is a special marker used in Structured Query Language (SQL) to indicate that a data value does not exist in the database.

我不建议将它用作一般的“第三个选项”,我会使用 tinyint 并将其映射到代码中的 Enum。但是,对于 Yes/No 和 Unknown,我认为 NULL 可能是最好的方法,因为在数据库中读取 0/1/2 会不太清楚。

关于数据库,使用 null 作为三元选项的不良做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5154123/

相关文章:

ios - 将数据存储在具有快速关系的 Realm 数据库中

ruby-on-rails - 用户帐户设计和安全

mysql - 如何在 mySQL 中建模可选的自相关性?

ruby-on-rails - Ruby on Rails : params is nil. 未定义方法 `[]' 为 nil:NilClass

php - 空 X 零问题

database - 大数据——存储与查询

database - 删除 Redis 中所有排除自定义用户 key 的 key 的最佳解决方案?

Java - 在不允许使用@NotNull 或@Nullable 注释时在编译时检测 NPE 的最佳方法

java - 如何用hibernate指向其他表的ID?

sql - 数据库结构