首页 > 解决方案 > 数据库设计:使用布尔字段和重复表之间的区别

问题描述

我必须为正在构建的应用程序设计数据库模式。我将使用 MySQL。在这个应用程序中,用户输入数据并且它显然被保存在数据库中。但是,在用户发布数据之前,公众无法访问此数据。目前,我有一列用于存储所有数据。我想知道此表中指示数据是否已发布的布尔字段是否是一个好主意。或者,创建一个保存数据的表和一个发布数据的表,并在用户按下时将保存的数据移动到发布的数据表,是不是更好的设计Publish

使用每一种的优点和缺点是什么,其中一种被认为比另一种更好?

标签: mysqldatabasedatabase-designrelational-database

解决方案


案例:二进制

他们差不多。将此用作学习练习——以一种方式实施;观察一段时间,然后切换到另一种方式。

  • (相同)空格:由于一行只存在一次,因此两个选项都不是“更好”。
  • (偏爱 1 个表)当“发布”时,它需要一个事务从一个表中原子地删除并插入到另一个表中。
  • (喜欢 2 个表)某些SELECTs人会花时间过滤掉其他值为 的记录published。(这适用于deletedembargoedapproved和许多其他可能的布尔标志。)

案例:修订历史

如果一条记录有很多修订,那么两个表Currentdata 和History会更好。这是因为“重要”查询涉及获取唯一的当前数据。

PARTITIONs在这两种情况下都不太可能有帮助。)


推荐阅读