Извините за длинный заглавный титул, но требование / проблема довольно специфичны.
Со ссылкой на следующую примерную (но очень упрощенную) структуру (в psuedo SQL) я надеюсь объяснить ее немного лучше.
TABLE StructureName {
Id GUID PK,
Name varchar(50) NOT NULL
}
TABLE Structure {
Id GUID PK,
ParentId GUID, -- FK to Structure
NameId GUID NOT NULL -- FK to StructureName
}
TABLE Something {
Id GUID PK,
RootStructureId GUID NOT NULL -- FK to Structure
}
Как видно, структура - это простая древовидная структура (не заботящаяся о порядке детей для задачи). StructureName - это упрощение системы перевода. Наконец, «Нечто» - это просто нечто, ссылающееся на корневую структуру дерева.
Это всего лишь одна из многих таблиц, для которых требуется управление версиями, но эта служит хорошим примером для большинства случаев.
Существует требование к версии для любых изменений имени и / или дерева «макет» таблицы структуры. Предыдущие версии всегда должны быть доступны.
Кажется, есть несколько возможностей для решения этой проблемы, например, копирование всей структуры, но большинство подходов приводит к потере ссылочной целостности. Например, если следовать этому подходу, необходимо создать копию записи «Something», учитывая, что корневая структура будет новой записью и будет иметь новый идентификатор.
В других возможностях возможных решений рассматривается, как Wiki справится с этим, или зайдите гораздо дальше и посмотрите, как работают правильные системы контроля версий.
В настоящее время я чувствую себя немного не в силах понять, как действовать в этом роде.
Любые идеи будут высоко оценены.
Спасибо
leppie