软删除是一个好主意吗?

19 浏览
0 Comments

软删除是一个好主意吗?

软删除是个好主意还是坏主意?\n在你的数据库中,不是真的删除记录,而是将其标记为IsDeleted = true,在恢复记录时,只需将其标记为False。\n这是个好主意吗?\n是不是更好的主意是物理删除记录,然后将其移到归档数据库,如果用户想要恢复该记录,那么软件将在归档中查找记录并重新创建它?

0
0 Comments

软删除是否是一个好主意,取决于具体情况。可能有一些情况下,你在法律上被要求真正删除某些数据。也许有人要求你永久从系统中删除他们的社会安全号码。或者可能你有一个重复的记录,你想将其合并为一条记录。将重复的记录保留在已删除标志下可能没有优势。

此外,还有一个技术上的不利之处:你不能进行级联删除,这会自动清除对已删除数据的任何引用,以防止外键违规。这不一定是一个大问题,但需要牢记。

否则,我认为这是一个好主意。

关于级联删除的观点很好。

我认为DanM的观点是,如果你使用软删除,你必须自己处理级联删除。如果你使用硬删除(我所谓的“正常”删除),你可以让数据库自动执行级联删除。

那么级联恢复呢?

对于以“这取决于具体情况。”开始,给一个加一的。

解决方法:

- 如果需要永久删除数据,可以使用硬删除。

- 如果需要保留数据的历史记录或遵守法律要求,可以使用软删除。

- 对于软删除,需要自行处理级联删除和级联恢复的逻辑。

0
0 Comments

软删除是一个好主意吗?这个问题的出现是因为我们希望避免潜在的数据丢失。在一些情况下,我们需要对数据库进行清理,删除一个或多个记录,所以我们一般采用软删除的方法,先将记录标记为删除状态,然后再清空“回收站”或者采用类似文档管理的方法,将记录标记为过期状态,并经过审批流程后再进行硬删除。

在一些情况下,系统仍然需要保留数据以确保数据的完整性、审计或者历史变更记录,所以软删除是一个不错的选择。可以使用清理过程来进行真正的删除操作等。

有人建议在每个查询中都加上deleted=0的条件,但这样会增加代码的复杂性,我们可以创建一个视图来代替每个查询中的条件判断。可以创建一个名为"recycle_bin"的视图,只显示已删除的记录,通过对具有相同字段的表进行union操作来实现软删除。

还某些情况下了软删除数据的关联关系处理问题。例如,在company_departments表中删除了一条记录,而在users表中有一个外键department_id与之相关联。在这种情况下,你会如何处理users表中的外键?会将department_id设置为null吗?

软删除并不要求这样做,它只需要设置一个删除标记。如果你想清除旧的记录,可以按照通常的方式进行删除操作。

总结起来,软删除是一种避免数据丢失的好方法。通过软删除,我们可以保留数据的完整性、审计或者历史变更记录,并且可以通过清理过程进行真正的删除操作。同时,通过使用视图来简化查询操作,可以减少代码的复杂性。对于软删除数据的关联关系处理,只需要设置删除标记,不需要强制更新关联表的外键。

0
0 Comments

软删除是否是一个好主意?这个问题的出现的原因是,软删除会增加复杂性,需要在每个查询中添加WHERE IsDeleted = false的条件,如果开发人员忘记了这个条件,可能会导致数据泄露。此外,软删除可能无法适用于具有自然主键的表。解决方法可以是定期备份数据库,避免数据永久丢失;创建一个排除已删除记录的视图,并在需要时将其实例化;对于需要恢复已删除数据的情况,可以将IsDeleted设置为false;对于报表等需要显示已删除数据的情况,可以考虑对表进行分区。软删除的使用应该有充分的理由,并且要考虑到性能、存储空间、数据完整性等方面的影响。

0