Создание схемы БД для хранения покупной цены
У меня есть веб-сайт, на котором я работаю, где мне нужно отслеживать цену, которую кто-то заплатил при оформлении заказа.
цены на продукты могут быть скорректированы в любое время, когда я не могу их контролировать.
Первоначально он был настроен так, что я никогда не удалял цены и просто рассчитывал цену динамически, используя отключенные цены, но я изменил это по ряду причин. (в основном из-за накладных расходов, но также потому, что я добавил новую функцию, которая означала, что способ расчета цен не был идеальным)
главная цель - чтобы веб-сайт мог взимать комиссию с продаж, поэтому сейчас у меня есть набор таблиц счетов-фактур, которые занимаются отслеживанием этих данных, но я понял, что это немного запутанно при настройке.
я думаю, что я должен переместить данные так, чтобы это было в такой ситуации...
в настоящее время это так [продукты] - [заказ_продукты] - [заказы]
и я бы изменил его, чтобы добавить еще одну таблицу, объединенную в [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 и тому подобное - гораздо менее болезненными.