Я попытаюсь привести простой пример графа объектов.
Рассмотрим блог со следующей структурой.
Posts
PostID
Title
Description
PostUpdates
PostUpdateID
PostID
Title
Description
DateUpdated
UpdatedBy
ApprovedBy
PostStatus(Approved/Rejected)
Здесь моя логика будет отображать сообщение и его последнее обновление и одобрение PostUpdate.Теперь в этом случае, ничего на самом деле не модифицируется.Всегда добавляется новый набор изменений, вы можете решить удалить старые версии.
Для сохранения вы добавляете новую запись PostUpdate в PostUpdates.
Для Супер Администратора вы можете отобразить все обновления и позволить ему утвердить правильное.Когда администратор решит одобрить обновление, сообщение будет изменено с учетом содержимого последнего утвержденного PostUpdate.
Другая альтернатива (более общая)
Вы можете создать таблицу следующим образом:
RowUpdates
RowUpdateID
TableName
TableKey
NewValues (kind of XML store to save which fields were modified)
UpdatedBy
ApprovedBy
DateUpdated
UpdateStatus (Approved/Rejected)
Но в этом случае вам придется использовать отражение, чтобы избежать сохранения значений вDB и вместо этого создайте новую запись RowUpdate, и только если администратор одобрит ее, фактические значения должны быть опубликованы в БД после выполнения отображения отражения.