Дано:
- - Марка
- - Модель (при выборе марки)
- - Поколение (при выборе модели)
- - Комплектация (при выборе поколения)
- - Кузов (при выборе модели)
- - Двигатель (при выборе кузова)
(У каждого пункта есть своя таблица, то есть есть таблица marka - в ней все марки автомобилей, есть таблица model - в ней все модели автомобилей и т.д.)
Для товара есть только одно обязательное значение - Модель, остальные по выбору
Для товара можно указать несколько автомобилей
В голове два варианта реализации:
1. Создаем пять столбиков (Модель, Поколение, Комплектация, Кузов, Двигатель) для каждого столбика тип JSON, в нем храним выбранные данные (id)
Пример получаемой таблицы
prods
id | name | model | pokolenie | komplektaciya | kuzov | dvigatel
1 | Название товара | {1,2} | {1,2,3} | {1,2,3,4,5} | {1} | {1,2,3,4}
2. Делаем связи, создаем 5 связующих таблиц
Например создаем таблицу model и pokolenie
model
id | model_id | prod_id
1 | 1 | 1
2 | 2 | 1
pokolenie
id | pokolenie_id | prod_id
1 | 1 | 1
2 | 2 | 1
3 | 3 | 1
И таблица с товаром
prods
id | name
1 | Название товара
Мне больше нравится первый вариант, из-за простоты, меньше запросов в БД и меньше объема записей, ориентировочное кол-во товаров >5 мл, у каждого товара может быть с десяток выбранных значений (модель, поколение, комплектация, кузов, двигатель)
Как правильно сделать структуры?