Дизайн базы данных для сайта электронной коммерции - PullRequest
2 голосов
/ 25 октября 2011

Я скорее человек из внешнего интерфейса, поэтому, если эти вопросы окажутся глупыми, я заранее извиняюсь:)

Я разрабатываю схему базы данных для сайта электронной коммерции.Товар, продаваемый на этом сайте, может содержать другие товары.Eq: Думайте об автомобиле как о продукте.Автомобиль также может содержать другие продукты, такие как сиденья, рулевое колесо, лобовое стекло и т. Д., Каждый из которых может быть продан отдельно.

Вопрос № 1 : что должен принять стол Product для этогов учетную запись?Имеет ли смысл для таблицы Product иметь поле с именем Products, содержащее все идентификаторы productId, связанные с этим продуктом?(или нормализовано в своей собственной таблице для оптимизации)

Вопрос № 2 : этот сайт также будет время от времени иметь скидки, которые могут быть применены к продукту (либо на отдельный продукт, либопродукт, который содержит другие продукты).Есть также скидки, которые применяются ко всему заказу.Каков наилучший подход к оформлению таблицы скидок?

Ответы [ 2 ]

2 голосов
/ 25 октября 2011

Вопрос 1:

Не включайте столбец с идентификаторами, разделенными запятыми.Ты будешь ненавидеть жизнь.Трудно запросить, сложно обновить и не позволяет обеспечить целостность данных.Я бы рекомендовал использовать что-то вроде этого:

Product
--------
ProductId
ProductName
ParentProductId  --nullable

Это даст вам таблицу с рекурсивной иерархической структурой.Если у Продукта нет родителей, просто оставьте столбец ParentProductId пустым.

Вопрос 2:

Я бы использовал эту структуру для скидок:

ProductDiscounts
-----------------
DiscountId
ProductId  --nullable
Discount

Order
------
OrderId
DiscountId --nullable
OtherStuff

С этой структурой вам придется встроить логику для применения скидок без определенного идентификатора продукта ко всему заказу.

1 голос
/ 25 октября 2011

Не зная больше, это должно соответствовать вашим потребностям:

Q1.

Таблица продуктов с идентификаторами
Содержит таблицу с несколькими строками, содержащими идентификатор продукта и содержащий идентификатор продукта

Q2.

Таблица скидок, в которой есть:
Дата начала скидки
Дата окончания скидки
Десятичная сумма
Тип суммы - процентная сумма или сумма в долларах США
Идентификатор продукта - если ноль, то скидкаотносится ко всему заказу, а не только к одному продукту

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...