Как реализуется организация каталога интернет-магазина?
Делаю магазин на yii2. Хотел бы узнать мнение опытных людей, как грамотно организовать каталог интернет-магазина. Т.е. как он должен быть составлен: это одна таблица, дерево или несколько связанных таблиц для хранения катетегорий, подкатегорий и товаров (названия)
Это довольно классический случай, он называется EAV. Создать можно многими способами - от способов "в лоб и по-быстрому", до правильных и гибких. Также тот или иной способ может оказаться более или менее предпочтительным в зависимости от, например, того, как много будет подкатегорий, как часто они будут добавляться, от нагрузок, сценариев использования и т.д. Слишком много факторов, от которых зависит правильное решение. Поэтому на ваш вопрос невозможно дать однозначный ответ. Если вы более подробно опишете задачу, тогда можно будет помочь.
auoa16, моя задача состоит в том, чтобы сделать каталог, который в дальнейшем будет использован при добавлении товаров пользователем и использовании покупателем с целью сделать заказ
Maksim86, нет, это не описание. Смотрите, для начала скажите, о каких объемах товаров речь. Затем скажите, какая предполагается нагрузка (хотя бы просто сколько пользователей у вас ожидается в один момент времени примерно). Затем скажите, как будет устроен магазин - какие там категории и подкатегории, какая максимальная вложенность, может ли один товар фигурировать в разных категориях/подкатегориях, будут ли делаться выборки товаров смешанных категорий и насколько часто, может это и вовсе основной сценарий, и т.д. То есть вам нужно очень подробно описать задачу, чтобы можно было предложить оптимальное решение.
Объёмы товаров как в любом интернет магазине, т.е. например 20 категорий в каждой категории не менее 10 подкатегории ну и большое количество товаров, а так же возможно потребуются фильтры по цветам и т.п. (думаю базу стоит закладывать с возможностью расширить функционал приложения в дальнейшем). Нагрузка будет порядка 3000 пользователей. Трудно сказать, какие именно будут категории и подкатегории, но тематика абсолютна разная ожидается. Пока что вложенность мне видится в виде трёхмерного массива, но возможно, тут я не совсем корректно выразился (категория-> подкатегория-> товар). Выборка из смешанных категорий вполне может быть. В целом начальные требования не очень большие, но в скоре всё начнёт расширяться.
Дерево, в простейшем случае id, pid, name. Посложнее nested set.
У товара есть поле category_id куда кладется основная категория и дополнительная таблица product-category если товар может быть в нескольких категориях