我必须为正在构建的应用程序设计数据库架构。我将使用MySQL。在此应用程序中,用户输入数据,数据显然会保存在数据库中。但是,在用户发布数据之前,公众无法访问此数据。目前,我有一列用于存储所有数据。我想知道此表中的布尔值字段是否指示数据是否已发布是个好主意。或者,更好的设计是在用户按下{'name': 'goals', 'value': 5}
None
时为保存的数据创建一个表,为发布的数据创建一个表,然后将保存的数据移动到发布的数据表。
使用每一种都有哪些优缺点,其中一种被认为比另一种更好吗?
答案 0 :(得分:0)
情况:二进制
它们差不多相等。将此作为学习练习-以一种方式实施;观看一会儿,然后切换到另一种方式。
SELECTs
将花费时间用published
的其他值来过滤记录。 (这适用于deleted
,embargoed
,approved
,以及许多其他可能的布尔标志。)案例:修订历史记录
如果一条记录的修订版本很多,则最好使用两个表Current
和数据History
。这是因为“重要”查询涉及获取唯一的当前数据。
({PARTITIONs
在两种情况下都不太可能提供帮助。)