我想知道是否有人可以提供各种理据/解决方案来知道何时从数据库中删除记录,而不是通过字段值(例如is_hidden=1
)在读取操作期间简单地隐藏它们。
我的应用程序是一个社交网络/电子商务网络应用程序。我倾向于支持is_hidden
策略,但随着站点的增长,我可以看到这导致了一个非常糟糕的网站。
这是我的名单。名单上有哪些东西我遗漏了?清单的优先顺序好吗?
Delete
DELETE
is_hidden
CREATE
数据有用DELETE
吗?SELECT ... WHERE is_hidden!=1
有什么想法?
发布于 2013-02-28 04:21:33
您可能希望进行软删除的主要原因是审计跟踪需要它。例如,我们可能有一个发票表和一个空列,而且我们通常只是省略无效的发票。这保留了审计线索,因此我们知道哪些发票被输入,哪些发票被作废。
由于这个原因,许多领域(特别是金融领域)都倾向于使用软删除。通常,与数据集相比,删除的数量很小,而且您不想真正删除,因为实际上这样做可能会让人为盗窃金钱或真实世界的商品提供掩护。然后,可以为需要“删除”数据的查询显示“已删除”数据。
一个很好的非db的例子是:“在你的总日记账或总分类账上写字时,用笔写,如果你马上发现错误,用一行划掉,这样原始数据仍然清晰,并在下面写正确的值。如果你后来发现了,要么写一个调整条目,要么写一个反转和一个新的。”在这种情况下,您的主要原因是查看何时更改了哪些内容,以便在有问题时可以对这些更改进行审计。
通常需要查看此类信息的人可能是财务或其他审计人员。
发布于 2013-02-27 15:55:14
在你的问题中,你已经说了所有的话:
删除将完全删除条目和
is_hidden=1会把它藏起来。
因此:如果将来可能需要这些数据,那么应该使用隐藏方法。如果您确信数据再也不会被使用,请使用delete。
关于性能的:
您可以使用两个表:
甚至三张桌子:
或者:
一切都看你的了。但是如果你看看facebook或google:他们永远不会删除任何东西!数据== Money == Power ;)
发布于 2013-02-28 04:41:39
就性能和开发的容易程度而言,在您的平台上可能有过滤索引、索引视图等,这意味着将软删除的数据保存在身边对您的系统几乎没有什么影响。
https://stackoverflow.com/questions/15116146
复制相似问题