Я работаю над системой заказов для своего интернет-магазина. У меня есть 2 таблицы:
Теперь я хочу иметь способ хранения сложных заказов клиентов в базе данных. Мне нужно что-то, что позволит мне узнать, сколько каждого размера (S, M или L) каждого продукта находится в заказе.
Сложная часть заключается в том, что я хочу иметь возможность добавлять / редактировать / удалять продукты (конечно, не влияя на заказы из прошлого), поэтому метод должен быть гибким
Как мне это сделать?
Благодаря!
По крайней мере, вам нужно:
Products (one row per product) ProductID Size Orders (one row per order) OrderID OrderDetails (one row per product per order) ProductID OrderID Size
Обратите внимание, что каждый «размер» – это собственный ProductID. Вероятно, вы захотите иметь еще один идентификатор, который группирует продукты, которые являются одним и тем же «базовым» продуктом, но разных размеров.
Поэтому, если у заказа № 1 есть три продукта, а у заказа № 2 – четыре, то у OrderDetails
будет семь строк:
OrderID ProductID Quantity 1 234 2 1 345 9 1 456 30 2 432 1 2 234 65 2 654 8 2 987 4
Зависит от ваших целей для вашей тележки. Например, вы хотите разрешить гостевые покупки? т.е. когда пользователю не нужно входить в систему, чтобы совершить покупку?
Прилагаемое изображение – это дизайн, над которым я работал, и он выглядит следующим образом:
Посетитель выбирает продукты с сайта и добавляет их в сеансовую тележку (просто место для временного хранения продуктов, их количества и их цены и т. Д.).
После того, как клиент готов к регистрации, мы создаем заказ, лицо заказа и person_address (где продукт должен быть доставлен) и добавьте элементы в таблицу order_item. Вся эта информация добавляется клиентом на странице проверки.
Последний шаг заключается в том, чтобы предложить способы оплаты: paypal, кредитная карта и т. Д.
Что мне нравится в этом проекте, так это то, что пользователи не обязаны регистрироваться у нас. Order_person действует как своего рода интерфейс между пользователями и заказами. Если вы регистрируетесь, мы просто связываем order_person с таблицей пользователя …
Я также включил образец лицевой части страницы проверки.