Как отслеживать историю таблиц БД, которые включают таблицы сопоставления «многие ко многим»?

Я видел здесь несколько вопросов об отслеживании истории БД, но не могу найти тот, который соответствует нашей ситуации. Нам нужно отслеживать историю нескольких таблиц, некоторые из которых являются таблицами связи «многие ко многим». Например, скажем, у нас есть эта схема:

EntityA
id
name

EntityB
id
name

ABLink
A_id
B_id

Таким образом, отслеживание изменений в EntityA или EntityB кажется довольно простым. Мы можем вести таблицу журнала с теми же столбцами, а также отметкой даты и пользователем. Но как насчет ссылок? Как мы поддерживаем набор ссылок, действительных для данной версии данных? Нам нужно иметь возможность воссоздать историю данных, показывающую изменения в хронологическом порядке. Поэтому, если ссылка добавлена ​​или удалена, мы указываем это. И т.п.


person chacmool    schedule 06.04.2010    source источник


Ответы (1)


Создайте таблицу журнала ABLink (с собственным первичным ключом, если хотите), которая имеет ссылки внешнего ключа на таблицы журнала EntityA и EntityB. Вы можете добавить столбец change_type в свои таблицы журналов, чтобы указать, является ли запись журнала insert/update/delete — конечно, таблица журнала «многие ко многим» не должна содержать никаких обновлений. записи change_type:

ABLink_Log       EntityA_Log     EntityB_Log
----------       -----------     -----------
id               id              id
A_Log_id         name            name
B_Log_id         change_type     change_type
change_type      date_stamp      date_stamp
date_stamp       user_id         user_id
user_id
person Bermo    schedule 07.04.2010