Создание схемы БД для хранения покупной цены

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

цены на продукты могут быть скорректированы в любое время, когда я не могу их контролировать.

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

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

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

в настоящее время это так [продукты] - [заказ_продукты] - [заказы]

и я бы изменил его, чтобы добавить еще одну таблицу, объединенную в [order_products] - [order_product_prices]

я бы просто настроил так, чтобы order_products также ссылался на используемую цену, но веб-сайты могут продавать билеты на мероприятия, которые охватывают несколько дней, и каждый из этих дней обозначен по отдельности, поэтому в то время как продукт является [event_one], он оценивается как [event_one_day1], [event_one_day2], [event_one_day3], где каждый день оценивается индивидуально.

Есть ли более идеальный способ настроить это, или моя идея добавить новую таблицу, это лучший способ настроить это для того, что мне нужно сделать?

1 ответ

Если я вас правильно понял, ваши цены действительны только в течение определенного времени.

Таким образом, вам нужна таблица для хранения этой информации. В этом случае я бы предложил такую ​​таблицу:

product_id   price  valid_from  valid_to    
1            14.99  2013-09-07  2013-09-08  
1            16.99  2013-09-09  2013-09-10  
1            17.99  2013-09-11  2013-09-12  

Теперь вы можете запросить текущую цену:

SELECT PRICE
  FROM PRICES
 WHERE PRODUCT_ID = %yourproduct%
   AND %current_date% BETWEEN VALID_FROM AND VALID_TO  

Для счетов я бы сохранял уплаченную цену отдельно со счетом. Это значительно упрощает резервное копирование данных выставления счетов, а посещения IRS и тому подобное - гораздо менее болезненными.

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