Предложения по дизайну базы данных для настраиваемого продукта - PullRequest
0 голосов
/ 15 апреля 2010

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

Я начал с чего-то подобного.

Особенности

  • ID
  • имя

Функции Особенности

  • ID
  • id_feature
  • значение

Продукты

  • ID
  • имя
  • цена

Особенности продукта

  • ID
  • id_product
  • id_feature
  • значение (сохранить значение из опций функции для удобства поиска)
  • настраивается (да, нет)

Проблема в том, что теперь я застрял в том, как сохранить настраиваемые функции продукта. Я думал о сохранении их стоимости как JSON. Но это усложнит изменение цены сбережения для определенного варианта.

Как бы вы поступили об этом?

Спасибо.

1 Ответ

2 голосов
/ 10 мая 2010

Еще две таблицы будут творить чудеса (ниже). Такие хаки, как JSON или разбираемые текстовые поля, можно и нужно всегда избегать.

  -- one product <id_product> can have multiple
  -- product variants <id> with different features  enabled
  product_variant
    id
    id_product (one product - many variants)

  -- features, enabled for certain <id_product_variant>
  product_variant_enabled_feature
    id
    id_product_variant (one variant - many features)
    id_product_feature
    unique_constraint(id_product_variant, id_product_feature)
...