версия каждого поля против поля даты в истории? - PullRequest
5 голосов
/ 26 апреля 2011

Что вы порекомендуете и почему?

У меня есть несколько таблиц, когда я изменяю данные ... они должны идти в таблицу истории (аудит) с датой вступления в силу.

Другое решение заключается в создании версий каждого поля для вставки новой строки при внесении изменений в данные?

Какой метод обработки информации о счете является лучшим?Название товара и цена всегда меняются

Ответы [ 3 ]

4 голосов
/ 26 апреля 2011

Это медленно изменяющиеся размеры , type 2 и type 4, соответственно.

Оба метода действительны и могут более соответствовать вашим потребностям, в зависимости от вашей модели и запросатребования.

По сути, type 2 (управление версиями) более уместно, когда вам нужно запрашивать исторические значения так же часто, как текущее, тогда как type 4 (таблица истории) больше подходит при запросе текущегозначение чаще и больше запросов (я имею в виду больше запросов на разработку) к самому последнему значению.

2 голосов
/ 26 апреля 2011

Система, которую мы используем и которой довольны:
Для каждой таблицы, для которой требуется история, мы создаем аналогичную таблицу и добавляем в конце поле отметки времени, которое становится частью PK.
Каждое обновление в исходной таблице мы вставляем в таблицу истории с такими же условиями:

update table x WHERE somthing something

insert into table x_history 
select * from x WHERE something something

Сохраняет ваши данные в чистоте, а таблицы тонкими.

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

Мое личное предпочтение будет состоять в том, чтобы использовать шаблон Observer в вашем приложении и использовать отдельную таблицу истории. Это означает, что вы можете извлекать данные из таблицы истории, когда вам это нужно, и вы не снижаете скорость запросов к основной таблице.

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