Как лучше реализовать версионность данных в MS Access 2000
От: IvanM Россия  
Дата: 27.10.05 08:12
Оценка:
Нужно написать небольшое приложение, и вот пара таблиц из него.

[Document]
------------------
ID
DocName

DepartmentID


[Department]
------------------
ID
DptName


Требования такие, что если отдел меняет свое название, то документы, которые относились к нему, должны сохранить старое название. Ну и с фамилиями то же самое. То есть вновь создаваемые документы должны идти с актуальными названиями и фамилиями, а старые должны оставаться неизменными, не смотря ни на что. Изменения фамилий и названий отделов бывают достаточно редко, но все же бывают. Я на вскидку вижу два пути решения этой проблемы. Простое и правильное

1. Внести все потенциально изменчивые поля в таблицу [Document]. Таким образом, изменение таблицы [Department] уже не будет влиять на созданные документы. Достоинства – простота. Недостатки – избыточность и нарушение нормализации.

2. Создать в таблице [Department] (и во всех других, где нужно) версионность данных. При удалении – запись помечать удаленной. При модификации – добавлять новую версию, а старую помечать удаленной. При отображении удаленные записи фильтровать. Возможно, нужна будет ссылка в актуальной записи на предыдущую версию. Достоинства – минимальная избыточность. Недостатки – много вспомогательной логики.

У кого есть какие мнения? Может кто сталкивался с подобными задачами?

PS Приложение маленькое, поэтому база – MS Access 2000. Там нет ни триггеров, ни хранимых процедур.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.