数据库设计:使用布尔字段和重复表之间的区别

时间:2019-01-05 04:43:45

标签: mysql database database-design relational-database

我必须为正在构建的应用程序设计数据库架构。我将使用MySQL。在此应用程序中,用户输入数据,数据显然会保存在数据库中。但是,在用户发布数据之前,公众无法访问此数据。目前,我有一列用于存储所有数据。我想知道此表中的布尔值字段是否指示数据是否已发布是个好主意。或者,更好的设计是在用户按下{'name': 'goals', 'value': 5} None 时为保存的数据创建一个表,为发布的数据创建一个表,然后将保存的数据移动到发布的数据表。

使用每一种都有哪些优缺点,其中一种被认为比另一种更好吗?

1 个答案:

答案 0 :(得分:0)

情况:二进制

它们差不多相等。将此作为学习练习-以一种方式实施;观看一会儿,然后切换到另一种方式。

  • (相同)空格:由于一行仅存在一次,所以两个选项都不是“更好”。
  • (偏爱1个表)“发布”时,需要执行一项操作,以原子方式从一个表中删除并插入另一个表中。
  • (支持2张表)某些SELECTs将花费时间用published的其他值来过滤记录。 (这适用于deletedembargoedapproved,以及许多其他可能的布尔标志。)

案例:修订历史记录

如果一条记录的修订版本很多,则最好使用两个表Current和数据History。这是因为“重要”查询涉及获取唯一的当前数据。

({PARTITIONs在两种情况下都不太可能提供帮助。)