Реализация категорий (вложенных), характеристик товаров (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 |
Я думаю этот топик будет многим полезен, если найдётся решение описанных мною задач.
Список дополнительных вопросов:
- Как реализовать мультиязычность для категорий, товаров? (Как переводить view - ясно)
Тавтология: крутится всё на Laravel, mySQL