Хочу сделать каталог продуктов и у меня появился вопрос:
Какую выбрать структуру базы для этого?
Если товары могут быть разных типов с разными характеристиками. Например, телевизоры и холодильники.
Ожидаемое количество разных типов товаров в моём случае составит около 10-20. У каждого типа будет 20-40 характеристик. Количество товаров каждого типа порядка 10. Продавцов этих товаров будет не более 500.
Характеристики меняются редко, но для разных типов товаров наборы характеристик могут сильно отличаться.
Изучая тему я понял, что варианта примерно 2:
Вариант 1 (гибкий). Все характеристики в одной таблице (модель EAV). Вариант 2. Для каждого типа товара делать свою таблицу со своими наборами характеристик. В этом случае надо плодить новые таблицы при появлении нового типа товара.
Ещё встречался вариант с использованием JSON для хранения характеристик в одном столбце.
Скорее всего, задача по проектированию базы типовая, и, возможно, есть какое-то красивое готовое решение. Только я пока его не нашёл.
Интересно, как такую проблему решают взрослые, например. Яндекс.Маркет?
Какова структура БД у них?
Может ли тут помочь ElasticSearch?
---
На проекте сейчас используется laravel + mysql.
Может есть что-то готовое для этой связки?
Первый вариант в маленьких магазинах. Второй в больших наподобие юлмарта. В Яндекс маркете скорее всего монга или касандра потому что им важна устойчивость базы к падению.