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

есть таблица product (id, brand_id, ...) - товар
есть таблица category (id, ...) - категория товара
есть связующая таблица category_product (product_id, category_id)
есть таблица brand (id, ...) - производитель товара

на сайте нужны страницы подобного содержания:

/catalog/{category}/ - каталог товаров по виду
/product/{product} - карточка товара
/brand/{brand}/ - каталог товаров по бренду
/catalog/{brand}-{category}/ - каталог товаров по бренду и по виду
/catalog/{special_products}/ - каталог товаров с выборкой по какому-либо признаку товара

Пример:

/product/gucci-kurtka-chernaya-0123 - карточка черной куртки бренда gucci артикул 0123
/brand/gucci/ - каталог товаров gucci
/catalog/gucci-kurtki/ - каталог курток gucci
/catalog/kurtki/ - каталог всех курток
/catalog/kurtki-chernye/ - каталог только черных курток

Думаю отделить такие вещи, как активность, h1, title, description от товаров/категорий, соответственно сделать отдельные таблицы для веб-страниц, но не знаю как правильно все связать, особенно для страниц с выборкой из нескольких раных таблиц (куртки гучи, черные куртки гучи итп).

В голову приходит вариант сделать одну таблицу page с необходимыми полями и связать с товарами таблицей page_product, но не представляю как это все тогда сгруппировать и сделать иерархии, сделать тегированные страницы (что-бы в куртках были ссылки на страницы красных курток, черных курток, курток гучи, и все что тоже "куртки"), наверно это по-другому решается. Подскажите, пожалуйста, как это спроектировать?


Ответы (1 шт):

Автор решения: Qwertiy
  • Делаешь отдельно набор тегов: гучи, чёрный, куртка и так далее.
  • Через отдельную таблицу организуешь связь многие-ко многим для тегов и товаров.
  • Каким-то образом составляешь или генерируешь словарь, ставящий в соответствие страницу и набор тегов.
  • При открытии страницы берёшь соответствующие ей теги и выгружаешь все товары по ним.
  • При необходимости можно усложнить, заменив один из тегов (куртка) на категорию, чтобы в рамках категории показывать определённый набор характеристик. Тогда у страницы может быть только одна категория и произвольное число тегов.
→ Ссылка