Как-то я быстрее обернулся чем ожидал. Який я швыдкий!
Спасибо за ответы. Пока подробно комментировать каждый не буду, а предоставлю собственные варианты. Их роилось в мозгу несколько, но так быстро, что удалось поймать за хвост только некоторые. Поэтому буду считать и додумывать по мере написания.
1. Отдельная таблица, где хранится история изменения клиента. Нечто вроде предложенного
GSerg'ом,
uhm'ом и
alibek'ом. Поиск либо по дате, либо по минорному ID. В качестве контроля актуальной записи, либо Disabled для старых записей, либо, как предлагал
alibek, Last - для актуальной. Испугало внедрение функции поиска нужной записи в каждый запрос, тем более что это в Access'е. Когда-то делал похожее на FoxPro, тормозило жутко. А при поиске по минорному УИН'у, ещё придётся во всех связанных таблицах хранить доп. столбец.
2. То же самое, но в одной таблице. Добавляется одно поле как у
alibek' а и включается в составной PrimaryKey. Тупо копируется запись о клиенте с тем же ID, кроме даты создания, инкрементируется минорный ID и на не актуальные записи ставится Disabled. Недостатки те же что и с отдельной таблицей.
3. Далее были различные вариации на эту тему, но они не стоят отдельного описания.
А вот пока путешествовал придумал следующее (кстати,
как вы думаете?). Добавляем новое поле, но не включам его в PrimaryKey. Копируем в него текущие значения ID. При создании новой записи просто берём значение ID. При изменении данных клиента создаём клон записи: т.е. копируем всё кроме даты создания (устанавливаем новую). В исходной записи устанавливаем флаг что-нибудь типа Cloned и в списке клиентов она не отображается и все новые документы будут привязаны уже к клону клиента без изменения логики программы. Т.о. клон будет иметь собственный ID и плюс ID клонированной записи. Все запросы по всязанным таблицам остаются прежними. Остаётся только при выводе на экран подставлять не настоящий ID, а второй и при поиске, может быть, искать также ID клона. Мне пока этот вариант нравится больше всего. Поковыряйте его, пожалуйста, может где какие подводные камни есть?