2012-01-24 2 views
2

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

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

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

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

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

ответ

1

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

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

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

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

+0

Спасибо за ан-HLGEM. Мне понравился способ создания представления, в котором есть только активные строки и концепция переименования. Я могу пойти с этим вариантом. – Kunal

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