Какие типы полей обычно используются для мягкого удаления? Что-нибудь из этого, какие-нибудь другие?
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 на значение с нуля. При каскадном восстановлении ссылки на записи должны быть оценены, чтобы увидеть, была ли причина, по которой они были удалены, результатом каскадного удаления, связанного с восстанавливаемой, реактивируемой или восстановленной записью.
Как выполняются операции каскадного восстановления сохраненных данных?