2009-02-02 2 views
2

Im пытается найти лучший способ сохранить историю/ревизию таблиц в реляционной базе данных.Пересмотр таблицы/история?

Я провел некоторое исследование и чтение, и не уверен, что было бы лучшим способом отслеживать изменения. Для моих основных таблиц Im совершенно уверен, что я установил таблицу ревизий, чтобы отслеживать (см. Рисунок), но это таблицы отношений, о которых я не уверен. Может быть, просто таблица аудиторских проверок с изменениями?

Посмотрите на рисунок ниже, какой будет лучший способ сохранить историю таблицы «movies_has_actors»? Я не могу просто сделать так, как с двумя главными столами (фильмами, актерами), так как мне нужно знать, какой MOVIE revision_id был активным с момента установления отношения. И что, если я хочу бросить в отслеживание, какой USER добавил отношение (таблица USER не в образце)? Я не хочу, чтобы все было в самой таблице отношений, потому что это будет просто увеличивать и замедлять запросы ...! [Alt text] [1]

Итак, чтобы подвести итог, что является лучшим способом сохранить истории, таблицы отношений?

С уважением, Modano

Ссылка на изображение: img115.imageshack.us/my.php?image=44623598nv1.jpg

[1]: Image

ответ

3

в SQL Server 2008 новая функция, называемая CDC (Change data Capture), может помочь CDC в MSDN. CDC - это возможность записывать изменения в табличные данные в другую таблицу без написания триггеров или какого-либо другого механизма. Изменение записи данных записывает изменения, такие как вставка, обновление и удаление в таблицу на SQL-сервере, тем самым делая информацию об изменениях, доступных в реляционных формат.

Channel9 видео - http://channel9.msdn.com/posts/ashishjaiman/CDC-Change-Data-Capture-SQL-Server-2008/

+0

MSDN: http://msdn.microsoft.com/en-us/library/bb522489.aspx статье википедии CDC: http://en.wikipedia.org/wiki/Change_data_capture – Gerrit

0

Я думаю, что таблицы аудита являются хорошим решением. Если вы используете SQL Server 2008, зайдите в Change Data Capture. Это функция автоматического отслеживания изменений.

+0

К сожалению, забыл добавить сообщение, что я использую базу данных mySQL. – 2009-02-02 15:07:12

+0

Мое первое предложение - лучший способ, с помощью которого я знаю таблицу аудита. Каждый раз, когда вы изменяете таблицу, вставьте запись в трей. Другим способом было бы сохранить контрольный журнал в таблице ассоциаций и иметь идентификатор ревизии, но это дорого и боль для управления. – JoshBerke

Смежные вопросы