Разработка базы данных продуктов электронной коммерции: раскрывающиеся атрибуты + настраиваемые атрибуты (например, настраиваемый текст) - PullRequest
0 голосов
/ 02 января 2019

Итак, я хочу разработать таблицы и отношения для модуля продукта решения для электронной коммерции. Для пояснения я буду использовать пример продукта с широкими возможностями настройки, который будет иметь:

  • Несколько «классических» атрибутов, таких как цвет или размер (выбирается с помощью обычного раскрывающегося меню , с несколькими параметрами, например красный, синий или черный для цвета или маленький , средний и большой для размера).
  • Но кроме того, некоторые пользовательские атрибуты (в основном текстовые поля или числовые поля, конечно же, выбираются через текст или числовые поля ввода ), которые пользователи будут свободно изменять и определять.

Цена будет зависеть от каждого атрибута (выпадающий + пользовательский), поэтому мне придется написать дополнительную логику как на стороне клиента, так и на стороне сервера.

Мои попытки пока соответствуют решению, данному в этом вопросе. Он хорошо работает с «обычными» атрибутами (выпадающими), но он плохо масштабируется для пользовательских текстовых или числовых полей, потому что в моем сценарии таблица variant_value просто не имеет никакого смысла.

Есть идеи? Заранее спасибо.

1 Ответ

0 голосов
/ 03 января 2019
  1. Узнайте о шаблоне схемы EAV (я добавил тег).
  2. Реализуйте его.
  3. Затем вернитесь с жалобой на все его проблемы.

В частности, утвержденный ответ в упомянутом Вопросе предлагает нормализовать вариант_значения.Это способ сделать EAV хуже.Также в Ответе есть несколько ненужных AUTO_INCREMENT идентификаторов для таблиц, которые имеют совершенно хороший "естественный" PRIMARY KEYs.Это замедляет некоторые запросы.

WordPress реализует EAV.Их таблица "postmeta" плохо реализована;Вот предложения по его улучшению: http://mysql.rjweb.org/doc.php/index_cookbook_mysql#speeding_up_wp_postmeta

Вот мой блог о EAV, некоторые его проблемы и некоторые частичные решения: http://mysql.rjweb.org/doc.php/eav

...