Вопрос по разработке базы данных / схемы, касающийся обновлений items_for_sale с течением времени

Я понимаю очевидный ответ на мой вопрос: "это зависит". Учитывая все это, я надеюсь, что один (или более) из вас поможет мне найти общие способы решения этой проблемы...

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

Таблица заказов будет отображать текущую цену на дату продажи.

мысли?

Спасибо!

2 ответа

Решение

Ваша интуиция верна. Никогда не теряйте информацию, если можете помочь!

Создайте таблицу с таким именем, используя синтаксис SQL Server:

CREATE TABLE PriceHistory (
PK_PriceHistory int IDENTITY(1,1) PRIMARY KEY, 
FK_Item int, -- foreign key to your item table
Price money,
ChangedAt datetime  -- captured at the time of change
)

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

Добавляем к ответу Тахбаза:

Важность заключается не только в отслеживании исторических цен, но и в смягчении изменений цен в будущем. Без "Измененного в" или, в данном случае, фактически с "Действительной датой", соответствующей цене, вам всегда придется менять цены в базе данных в точный день, с которого они должны применяться. Наличие действующей даты позволяет вам вводить новые цены, когда вы считаете нужным, и превращать их в "текущую" цену на указанную вами дату.

Другие вопросы по тегам