Как правильно реализовать структуру таблицы заказов?

Добрый день, при создании архивов заказов возник вопрос о правильном подходе к реализации структуры базы данных.

Как обычно бывает: посетитель помещает в корзину N товаров. Каждый товар имеет свои различные параметры (вес, цвет, цена, количество и пр.)

Пока что вижу следующий вид таблиц:

CREATE TABLE `Orders` (
	`id` INT NOT NULL AUTO_INCREMENT,
	`order_date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
	`order_user` INT NOT NULL DEFAULT '0',
	`order_method` VARCHAR(10) NOT NULL DEFAULT 'mail',
	`order_comment` VARCHAR(255) NOT NULL DEFAULT 'Ожидает проверки',
	`order_status` INT NOT NULL DEFAULT '0'
)

CREATE TABLE `Orders-Product` (
	`id` INT NOT NULL AUTO_INCREMENT,
	`order_id` INT NOT NULL DEFAULT '0',
	`product_id` INT NOT NULL DEFAULT '0',
	`product_title` VARCHAR(255) NOT NULL DEFAULT '',
	`product_count` INT NOT NULL DEFAULT '0',
	`product_price` VARCHAR(10) NOT NULL DEFAULT '0'
)

CREATE TABLE `Orders-Meta` (
	`id` INT NOT NULL AUTO_INCREMENT,
	`order_id` INT NOT NULL DEFAULT '0',
	`meta_id` INT NOT NULL DEFAULT '0',
	`meta_key` VARCHAR(255) NOT NULL DEFAULT '',
	`meta_value` TEXT NOT NULL
)


В таблице с прочими параметрами Orders-Meta будут записаны данные такие как: Информация о заказчике, предоставленная на момент заказа, параметры товара, скидки, акции, и прочие параметры.

Насколько верен такой подход? Возможно есть лучшее решение?

Спасибо!
  • Вопрос задан
  • 6069 просмотров
Пригласить эксперта
Ответы на вопрос 2
@portfelio
Если вы предусматриваете возможность одновременной покупки нескольких модификаций одного товара (а это правильно), то, конечно, нужно предусмотреть поле, в которое сохранять значения модификации.

Цену товара не забывайте сверять при окончательном оформлении заказа и дальнейшем его (возможно) редактировании. Если посетитель купил майку за 100 рублей, то лучше его будет уведомить в том случае, если во время оформления заказа её стоимость изменится.

Коментарии и статусы заказа лучше сохранять в отдельных таблицах, дабы можно было прослеживать историю изменений.
Ответ написан
Комментировать
@ikeagold
Вот отличный пример от Opencart, нагуглил по запросу: opencart db scheme
Если так продолжать то вот Magento, Prestashop
fetch.php?cache=&media=database_schema_o
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы