ソフト削除に付随して一般的に使用されるフィールドのタイプは何ですか?これらのいずれか、他に?
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をnullからの値に変更することです。カスケード復元では、レコード参照を評価して、それらが削除された理由が、復元、再アクティブ化、削除解除されたレコードに関連するカスケード削除の結果であるかどうかを確認する必要があります。
保存されたデータに関して、カスケード復元操作はどのように処理されますか?