Создание магазина электронной коммерции и желание предлагать скидки при оптовых заказах. Каждый продукт может иметь разные уровни скидок.
например различные % скидки в зависимости от заказанного количества.
Product : Quantity Bands[discount]
Product A: 1-10[0%], 11-20[5%], 21-50[15%], 51+[20%]
Product B: 1-5[0%], 6-10[10%], 10+[30%]
Product C: 1-10[0%], 11-20[5%], 21-50[15%], 51+[20%]
Немного смущен тем, как я должен моделировать это в базе данных...
Моя первоначальная мысль состояла в том, чтобы смоделировать мою таблицу скидок как самореферентный список смежности. Таблица продуктов будет иметь Discount_id, чтобы определить, к какой группе скидок она принадлежит.
e.g.
discounts table:
id int
name string
discount decimal
parent_id int nullable
Пример данных:
id name discount child_id
=============================================
1 1-10 0 2
2 11-20 0.05 3
3 21-50 0.15 4
4 51+ 0.20 null
=============================================
5 1-5 0 6
6 6-10 0.10 7
7 10+ 0.30 null
=============================================
таблица продуктов
id int
name string
base_price decimal
discount_id
поэтому в таблице продуктов продукт может иметь Discount_id либо 1, либо 5. Предположим, что Discount_id равен 5. Таким образом, чтобы получить таблицу, показывающую цены и скидки для оптовых покупок, я рекурсивно перебираю Discount_id, начиная с 5, пока child_id не станет нулевым. ?
Я полностью не в теме или есть лучший способ моделирования этих данных?