【发布时间】:2016-12-02 01:28:26
【问题描述】:
我正在开发一个系统,该系统基本上将记录当地体育俱乐部的结果,数据将包括结果、球队、比赛、球员等类型的东西。
我只是想知道什么是数据库设计的最佳解决方案以及我如何处理数据库中“删除”条目的普遍共识,我的选择如下:
- 硬删除 - 例如删除 db 条目(以及任何相关的级联行)
- 软删除 - 使用 'deleted_timestamp' 标志 - 如果它具有时间戳值,则认为它已删除,并且没有人可以看到此条目(除了我自己通过 cPanel 直接访问数据库以允许轻松恢复一行)
- 存档表 - 使用 硬删除 从主表中删除条目后,我会将此条目推送到具有原始表中关联的 primary_key 的存档表中。
人们认为优点和缺点是什么?根据我的情况,首选的解决方案是什么?
【问题讨论】:
-
取决于您的用例。您是否需要恢复记录或对已删除项目进行审计跟踪?
-
选项 3 很少是一个好主意;选项 2 更为典型,并且不排除对已“删除”一段时间的记录使用选项 1(为您提供各种“回收站”)。
-
@ceejayoz 我想我需要一些线索。例如,假设蓝队有 100 个结果,然后有一天决定解散。我想删除该团队,但我仍然想要他们的所有结果,因为它们将与其他团队相关,因此需要保留该信息。 (这有意义吗?)我正在考虑软删除 atm
-
@Zabs 我不确定团队的解散是否应该保证软删除,特别是如果仍有数据将他们与活跃的团队联系起来。最好使用 disbanded_when 字段,并且当团队与“活动数据”没有任何关联时,会间歇性地运行一个进程来标记团队进行软删除。
-
是否应该在 StackExchange 的其他地方添加类似这样的“基于意见”的问题?
标签: mysql database database-design