Задать вопрос
weranda
@weranda

Какие таблицы для продуктов (и их вариантов) в БД использовать?

Приветствую вас.

В общем, есть продукт. Пусть это будут слоны. Как завести один конкретный продукт — дело понятное:
table.products:
----
- id (PK)
- name
- desc
- category_id > FK
- brand_id > FK
- ...


А вот вот когда появляются варианты, то появляется сложность — не могу выбрать вариант. То ли в одной таблице все хранить, то ли разделять на две и более. Рассмотрим два варианта. Предположим, что появляются варианты слонов: розовые и синие. Для справки: могут быть и единичные, весьма конкретные продукты без вариантов. К примеру, просто какие-то там слоны. Сначала был просто один слон, но потом завезли разных слонов или появилась необходимость разделить их на конкретных слонов.

Вариант 1: одна таблица для всех слонов.
table.products:
----
- id (PK)
- name
- desc
- category_id > FK
- brand_id > FK
+ parent_id > self.PK (NULL | int)
+ is_parent (BOOLEAN)
- ...


Вариант 2: две таблицы для слонов и их вариантов
table.products
----
- id
- name
- desc
- category_id > FK
- brand_id > FK
- ...

table.product_variants
----
- id
- parent_id > FK.table.products.id
- name
- desc
- ...


У продуктов будут еще и общие характеристики в таблице product_attribute_values. К примеру, если у родительского продукта есть заполненные поля каких-либо характеристик, то они будут такими же и у «вариантов» продукта, если не определены в конкретном варианте продукта.

Помогите определиться с выбором и если знаете лучшие практики по этой ситуации, буду признателен за ваши рекомендации.
  • Вопрос задан
  • 111 просмотров
Подписаться 1 Простой 13 комментариев
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
У продуктов будут еще и общие характеристики в таблице product_attribute_values
Это же EAV? Почему там же не засунуть все эти типы слонов?
Ответ написан
Ваш ответ на вопрос

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

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