运动/游戏结果应用程序中的硬删除和软删除

时间:2016-12-01 17:06:35

标签: mysql database database-design

我正在开发一个系统,基本上会记录当地体育俱乐部的结果,数据将包括结果,球队,比赛,球员类型的事物。

我只是想知道什么是数据库设计的最佳解决方案以及我如何处理'删除'数据库中的条目,我的选择如下:

  1. 硬删除 - 例如删除了数据库条目(以及任何相关的级联行)
  2. 软删除 - 使用' deleted_timestamp' flag - 如果它有时间戳值,则认为已删除,并且没有人可以看到此条目(除非我通过cPanel直接访问数据库,以便轻松恢复行)
  3. 存档表 - 一旦使用主表中的硬删除删除条目,我会将此条目推送到archive_table,其中包含原始表中的关联primary_key。
  4. 人们认为什么是专业人士和缺点,并根据我的情况,首选解决方案是什么?

1 个答案:

答案 0 :(得分:1)

难以删除

<强>优点:

- 最容易实施

- 没有系统开销(硬盘空间,执行时间,代码复杂性)

<强>缺点:

-Data永远消失了

软删除

<强>优点:

-Data永远不会消失

-Data可以轻松管理,好像没有被删除(也许让管理员看到旧条目并恢复删除,或类似的东西。数据仍然在原来的同一个表中)

<强>缺点:

- 维持代码?在每个查询中,您应该记住在哪里过滤删除的数据以及不在哪里

-Tables可能会大幅增长,大大降低了查询性能

<强>已存档

<强>优点:

-Data永远不会消失

- 包含未删除数据的表格将像硬删除解决方案一样保持小而干净

<强>缺点:

- 难以将归档数据作为当前数据进行管理(例如,显示按某些值排序的已删除和未删除条目的查询需要与软删除相比需要额外的代码)

这就是我能在5分钟内思考的内容。肯定还有其他一点我不知道

编辑:我认为软删除最适合您的需求,因为不涉及繁重的计算