Захват истории контактной информации в базе данных - PullRequest
0 голосов
/ 02 апреля 2011

Я пытаюсь разработать модель данных, в которой будет важно сохранить историю некоторых контактных данных, таких как адреса электронной почты. Как мне записать конечную дату для адреса электронной почты, не имея атрибута в моей таблице электронной почты, который будет заполнен нулевым значением и ожидает заполнения?

Ответы [ 2 ]

0 голосов
/ 02 апреля 2011

Как мне записать дату окончания адрес электронной почты без атрибут в моей таблице электронной почты, сидя как Нулевое ожидание для заполнения?

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

create table email_end_date(
   email     datatype  not null
  ,end_date  datatype  not null
  ,primary key(email)
  ,foreign key(email) references the_email_table(email)
);

Эта таблица будет в 6NF.

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

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

0 голосов
/ 02 апреля 2011

Самое надежное решение - использовать сторонний инструмент для ведения журналов, который позволит вам регистрировать вставки, обновления, удаления и даже выборки.Однако, если вам нужна просто система отслеживания, я бы создал таблицу для текущих данных, а другую - для истории.Затем вы можете использовать триггер для заполнения таблицы истории всякий раз, когда производится вставка или обновление.


Сторонние приложения для аудита или мониторинга активности баз данных для MySQL:

IderaМониторинг активности базы данных

Hedgehog Enterprise

SQL Shark (больше инструмента мониторинга, но может использоваться для хранения изменений)

Аудит БД

...