временные срезы дерева
возможными операциями могут быть добавление нового каталога, удаление, изменение уровня элемента, добавление элементов в каталог, смена названия,др.атрибутов и т.д.
как сохранить само дерево - не вопрос :). как сделать остальное - главное.
Добавить 3 поля: CreateDate, ChangeDate, DeleteDate, ну и естественно удаленные ветки не удалять в реале, а "помечать на удаление".
есть некоторые мысли:
1. основную таблицу сделать такой:
Id - ид таблицы
ParentId - указатель на родительский элемент
Name - атрибут объекта (название)
DateTimeCreate - дата и время создания
DateTimeDelete - дата и время удаления (если не нуль, то объект удален в такое-то время)
2. вторую таблицу сделать такой:
Id - ид таблицы
Action - событие из перечня возможных
ActionDate - дата события
IdObject - ид объекта из первой таблицы, с которым происходит событие (если нуль, то событие со всей системой объектов)
только как быть, если некоторые действия над объектами растянуты во времени?