从数据库中删除记录或只是在读取期间隐藏它们?

tim*_*son 5 sql database database-design

我想知道是否有人可以提供各种原理/解决方案来了解何时从数据库中删除记录,而不是在读取操作期间通过字段值(例如 )简单地隐藏它们is_hidden=1

我的应用程序是社交网络/电子商务网络应用程序。我倾向于赞成该is_hidden策略,但随着网站的增长,我可以看到这会导致网站性能非常糟糕。

这是我的清单。我缺少清单上的哪些项目?列表的优先级是否良好?

Delete:

  1. 理由:减少表大小/提高数据库性能
  2. 理由:如果数据创建起来很简单,则很有用
  3. 解决方案:SQLDELETE

is_hidden:

  1. 基本原理:允许用户/DBA 恢复数据/对于敏感和难以处理的CREATE数据有用
  2. 理由:DELETE如果有必要的话可以稍后再做吗
  3. 解决方案:SQLSELECT ... WHERE is_hidden!=1

想法?

Chr*_*ers 4

您可能想要进行软删除的主要原因是审计跟踪需要它。例如,我们可能有一个发票表和一个作废的列,我们通常可能会忽略作废的发票。这保留了审计跟踪,以便我们知道哪些发票已输入以及哪些发票已作废。

由于这个原因,在许多领域(特别是金融领域)首选软删除。通常,与数据集相比,删除的数量很少,并且您不想真正删除,因为实际上这样做可能会让某人掩盖盗窃金钱或现实世界商品的行为。然后可以为那些需要它的查询显示“已删除”的数据。

一个很好的非数据库示例如下:“在总日记账或总账中书写时,用笔书写,如果您立即发现错误,请用一行划掉它,以便原始数据仍然清晰可辨,并在下面写下正确的值。如果您后来发现,要么写一个调整条目,要么写一个反转和一个新的条目。” 在这种情况下,您的首要原因是查看何时更改了哪些内容,以便在出现问题时可以审核这些更改。

通常需要查看此类信息的人可能是财务或其他审计师。