Я создаю приложение, которое требует поддержки различных категорий продуктов (например, в моде, электронике, автомобилестроении, бакалее и т. Д.), Поэтому, очевидно, для продуктов в каждой области (и даже для их подкатегорий). ), свойства продукта будут варьироваться от категории к категории.
Пример:
Продукты в области Fashion , такие как Джинсы, рубашки и т. Д. , которые имеют такие свойства, как размер, цвет, тип, тип материала и т. Д. в то время как продукты в Electronics могут быть похожи на мобильные телефоны, ноутбуки и т. д. , которые могут иметь такие свойства продукта, как процессор, память, память, размер, цвет и т. д.
Мой вопрос касается того, как хранить такую информацию наиболее обобщенным и эффективным способом?
Что я подумал о решении:
Я думал о создании трех таблиц для поддержки этой информации.
products
таблица:
Эта таблица будет содержать все продукты и их категории в форме вложенного набора , так что каждый родительский элемент будет действовать как категория и каждый лист будет действовать как продукт .
Наряду с этим эта таблица будет содержать метаинформацию о продукте (, такую как название, цена покупки, цена продажи, артикулы и т. Д., Которые будут общими для любого вида продукта ). Вероятная Структура таблицы этой таблицы выглядит так:
id(PK),
client_fk(FK to clients),
parent_id(for nested-sets),
lft(for nested-sets),
rgt(for nested-sets),
depth(for nested-sets),
name(meta),
sku(meta),
purchasing_price(meta),
selling_price(meta),
created_at,
updated_at
- Другие две таблицы будут работать как структура модели EAV.
products_props
таблица:
В этой таблице будут храниться все возможные свойства для любого продукта (из любой категории), такие как размер, цвет, процессор, память, память и т. Д. с их метаданные как описание, тип ввода, детали и т. д. Структура таблицы для этой таблицы может быть
id(PK), name, label, description, input_type, input_details, created_at, updated_at
products_props_data
таблица :
Эта таблица будет содержать значения для всех свойств, которыми обладает продукт. Структура таблицы для этой таблицы может быть:
id(PK), product_prop_fk(FK to products_props), product_fk(FK to products), value, created_at, updated_at
Читает на эту информацию будет гораздо больше, чем вставляет, обновляет или удаляет .
Вопросы:
- Я иду по правильному пути?
- Эффективно ли?
- Есть ли другой путь?
- Советы / предложения для достижения того, что я пытаюсь.
- Как это делает известная электронная коммерция? как Amazon, Flipkart, eBay?