【发布时间】:2017-06-20 15:03:39
【问题描述】:
我们使用需要管理员批准记录才能公开显示的表格。我想知道最合适的方法是设计这样一个表,其中主要查询是检索已批准(或尚未批准)的记录。
假设查询的列会被索引:
- 使用布尔字段对速度有什么好处?
- 检查列是否为 NULL 是否违反最佳实践?
例如:
id | title | text | approved_dttm
---------------------------------------
1 | ... | ... | null
2 | ... | ... | 2017-01-01 00:00:00 ETC
SELECT * FROM table where approved_dttm IS NOT NULL;
对
id | title | text | approved | approved_dttm
---------------------------------------
1 | ... | ... | 0 | null
2 | ... | ... | 1 | 2017-01-01 00:00:00 ETC
SELECT * FROM table where approved = 1;
注意:除了已批准/未批准之外,我们不需要多个状态。没有“需要进一步审查”等。
【问题讨论】:
-
恕我直言,坚持批准日期,布尔值添加冗余数据(如果设置了批准日期,则必须批准)。 NULL 的使用非常广泛,人们经常使用它。
-
您将如何处理已批准但您无法使用已批准的_dttm?如果答案是什么,我会放弃它。
标签: mysql database database-design