2016-05-04 5 views
0

Я подумывал об этом некоторое время, но я все еще не уверен, как лучший способ это сделать.Как регистрировать скидки в магазине?

Так в основном, в моем интернет-магазине у меня есть order стол:

+------+-------+---------+-------------+----------------+--------------+--------+ 
| id | name | email | grand-total | shipping-costs | address | status | 
+------+-------+---------+-------------+----------------+--------------+--------+ 
| 4312 | Roger | [email protected] | 5.99  |    1 | 22 Road Lane |  1 | 
+------+-------+---------+-------------+----------------+--------------+--------+ 

И связано с этой таблицей является таблица cart:

+-----+---------+-----------+---------------+-------+----------+--------+ 
| id | orderID | productID |  name  | price | quantity | status | 
+-----+---------+-----------+---------------+-------+----------+--------+ 
| 234 | 4312 | G55Sd  | Super Product | 5.99 |  1 |  1 | 
+-----+---------+-----------+---------------+-------+----------+--------+ 

Это все работает правильно. Однако проблема возникает, когда я хочу начать добавлять скидки. Я хочу иметь возможность посмотреть прошлый заказ и точно знать, какая скидка была применена, сколько и т. Д. Но я не знаю, где ее сохранить. А что, если у клиента есть несколько скидок? Я не могу просто добавить еще один столбец в таблицу orders для скидки или скидку, так как это не помогло бы мне в будущем заглянуть в нее.

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

+2

Вы можете оставить скидки в другой отдельной таблице в соответствии с заказом. –

+1

создайте новую таблицу 'скидки', чтобы сохранить все типы скидок и вторую таблицу' discount_to_otders' (многие-ко-многим), где вы можете применить один или несколько скидок по определенному заказу. – mitkosoft

+0

Я думал об этом, но тогда как будет выложен такой стол? – Chud37

ответ

1

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

Смежные вопросы