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

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

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

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

мысли

спасибо!

Ответы [ 2 ]

1 голос
/ 10 июля 2010

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

Создайте таблицу с таким именем, используя синтаксис 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
)

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

0 голосов
/ 10 июля 2010

Добавление к ответу Тахбазы:

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

...