Как отследить историю таблиц БД, включающих таблицы сопоставления «многие ко многим»? - PullRequest
1 голос
/ 07 апреля 2010

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

EntityA
id
name

EntityB
id
name

ABLink
A_id
B_id

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

1 Ответ

1 голос
/ 07 апреля 2010

Создайте таблицу журнала ABLink (со своим собственным первичным ключом, если хотите), которая имеет ссылки внешнего ключа на таблицы журналов EntityA и EntityB. Вы можете добавить столбец change_type в свои таблицы журналов, чтобы указать, является ли запись журнала insert / update / delete - конечно, таблица журнала многие-ко-многим не должна содержать никаких update записи 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
...