Реализация категорий (вложенных), характеристик товаров (Laravel, mySQL)

Разрабатываю интернет-магазин, сейчас занялся перепроектировкой БД, т.к. прошлая реализация не подошла. Думаю многие знают интернет-магазин вайлдберриз (не пишу ссылку, т.к. могут удалить пост)

Список задач:

  • Реализовать каталог как у них на сайте
  • Реализовать характеристики
  • Реализовать модификации товаров

Список вопросов:

  • Каким образом спроектировать базу данных, чтобы реализовать каталог как у них на сайте?
  • Как реализовать характеристики товаров (категория, цвет, размер, вес)?
  • Как реализовать модификации товаров

Пояснения:

  • Под модификациями товаров я подразумеваю схожие товары: iPhone 9 64GB красный и iPhone 9 64GB чёрный, то есть на странице каждого из этих товаров у нас должна быть ссылка на 'родственные' ему товары
  • 'Каталог как у них на сайте' - естественно, я не прошу реализовать мне базу данных и дропнуть её дамп сюда. Хотелось бы, чтобы просто объяснили логику работы их каталога, т.к. до меня не доходит на данный момент. Если я зайду в раздел 'Мужчинам' (1), я получу как бы список дочерних категорий, затем, если я перейду в эту дочернюю категорию (2), я увижу фильтр 'Категория', где находится перечень дочерних категорий для категории (2). И так для каждой категории на сайте, а местами есть вложенность немного другого характера (то есть она не всегда является трёхуровневой).

Мои предположения:

Реализовать каталог как у них на сайте Необходимо создать основные категории сайта (таблица categories), и у них есть поле parent_id, категории у которых parent_id = NULL -> родительские. У товаров (таблица products) есть поле category_id, где значением является какая-либо дочерняя категория из таблицы categories Создать таблицу characteristics с полями: id, name, type, category_id Создать таблицу characteristics_variants с полями: id, characteristic_id, name.

И вот как бы, реализация таких таблиц как-то должна решать поставленную задачу, но я не могу понять логику, как это все связать так, я думаю чего-то не хватает.

С модификациями товаров, я предполагаю, что нужно реализовать отдельную таблицу типа: products_relateds, куда будем сохранять 'родственные связи', но не могу понять как её правильно спроектировать тоже...

Categories:

id name parent_id
1 Мужское NULL
2 Брюки 1

Products:

id name category_id price alias brand_id
1 Брюки Nike 2 7500 bruki-nike 2
2 Брюки Cotl 2 2500 bruki-cotl 3

Characteristics:

id name type category_id
1 Категории STRING 2

Characteristics_variatns:

id characteristic_id name
1 1 Nike
2 1 Cotl

Я думаю этот топик будет многим полезен, если найдётся решение описанных мною задач.

Список дополнительных вопросов:

  1. Как реализовать мультиязычность для категорий, товаров? (Как переводить view - ясно)

Тавтология: крутится всё на Laravel, mySQL


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