至于级联恢复软删除的公共属性(soft delete common attributes with

2019-10-16 14:43发布

什么类型的字段通常用来陪伴软删除? 所有这些,任何其他方面?

bool IsDeleted // nice because the default value is 0 (no) just in case
date DateDeleted // is this a common one?
date DateCreated // more of a temporal db aspect
date DateModified // same with respect to created

我想问的原因是,使用软删除时,级联仍然必须以保持完整实现。 然而,真正的诀窍是不级联删除,这是相当容易的。

The trick is cascade restoring 。 在级联删除,用软删除的情况下,在关系图中的所有记录将被标记为删除,无效的,无论标志,也许不同的是改变datedeleted从空值。 在级联恢复,记录引用必须进行评估,看看他们是否已被删除的原因是级联的结果中删除相关记录正在恢复,reactiviated,未删除。

如何级联恢复操作与关于存储的数据进行处理?

Answer 1:

在要跟踪,不仅发生了什么结果,但情况下,也它发生了, 为什么 ,人们常常使用事务日志

事务日志表通常有这样的栏目:是执行操作的日期/事件的时间,事件的性质(插入,更新,删除,...),以及用户和/或处理。 也有事务日志,并在基表中记录的影响之间的联系。 这可以通过在基表上的事务日志表的外键来完成,但更常见的是将事务日志包含一个外键基表。 如果事务日志表,其中包括各种基础表共享的,你需要一个基表指针加上基表的外键。

在你的情况,如果缺失是主要关注的问题,你可以限制日志条目的缺失,使级联之间的区别删除对其他删除。 你可以(应该)也考虑使用事务封装在同一时间写的所有软删除(初级加级联)的。 您可以包括某种形式的标识,如标识值或GUID在你的日志中的“商业交易ID”和本ID放入那是同一个操作中的每个条目。 这给你什么事,当它发生时,为什么会发生一个明确的指示,并记录它发生。 您可以使用这些信息来决定如何扭转任何特定的交易,其中包括进行级联恢复。



文章来源: soft delete common attributes with regards to cascade recovery