История базы данных - PullRequest
       0

История базы данных

2 голосов
/ 25 января 2012

Какой самый эффективный способ систематизировать способ регистрации того, какие изменения были внесены в какие таблицы. Например, у меня в схеме базы данных около 10-12 таблиц, а одна таблица отображает записи, объединяя около 7-8 таблиц. Как синхронизировать изменения, внесенные разными пользователями в одну и ту же запись или в другую запись.

Подход A: наличие флага активации / деактивации строки. установите флаг деактиватора при обновлении записи, что приведет к деактивации строки и вставке новой записи с включенным флагом активатора.

Подход B: Поддерживать отдельные таблицы истории базы данных для каждой таблицы, в которой будут храниться данные с отметкой времени.

Предположение: записи будут часто обновляться. Общее количество ожидаемых записей должно быть не более 1000 строк.

Любые другие подходы, которые вы могли бы предложить?

Ответы [ 2 ]

1 голос
/ 25 января 2012

Я думаю, что ответ заключается в вопросе: «Как часто вам нужно просматривать историю конкретной записи и по какой причине?

Если вам нужно время от времени исследовать, кто что сделал, когда или дляОдной из целей аудита является использование подхода таблицы аудита, заполняемого триггерами при каждом изменении данных, или использование отслеживания изменений, если оно работает для вас (честно говоря, мы не находим его достаточно хорошим для аудита). Отслеживание изменений также можно успешно использовать, чтобы определить,например, запись была изменена с момента последнего импорта данных. Имейте в виду, что данные отслеживания изменений не являются постоянными, если только вы физически не копируете их в другую таблицу.

Если вам нужно часто просматривать всю историю, сохраняйте еевсе в одной таблице с активным флагом, который поддерживается с помощью триггеров. Создайте представление, которое имеет только активные записи для разработчиков, когда они хотят видеть только самые последние данные. Если вы делаете это с существующей базой данных, которая ранее былане хранить историю, топереименуйте таблицу и назовите вид той же самой таблицы, которая изначально была, чтобы ничего не ломалось.

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

0 голосов
/ 25 января 2012

Отслеживание изменений: http://msdn.microsoft.com/en-us/library/cc305322.aspx

Или

Сбор данных изменений: http://msdn.microsoft.com/en-us/library/cc645937.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...