@nicolaa

Как сделать структуры БД для автомобильных товаров?

Дано:

  • - Марка
  • - Модель (при выборе марки)
  • - Поколение (при выборе модели)
  • - Комплектация (при выборе поколения)
  • - Кузов (при выборе модели)
  • - Двигатель (при выборе кузова)


(У каждого пункта есть своя таблица, то есть есть таблица 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 мл, у каждого товара может быть с десяток выбранных значений (модель, поколение, комплектация, кузов, двигатель)

Как правильно сделать структуры?
  • Вопрос задан
  • 416 просмотров
Пригласить эксперта
Ответы на вопрос 4
rozhnev
@rozhnev Куратор тега MySQL
Fullstack programmer, DBA, медленно, дорого
Ни в коем слечае не используйте JSON для хранения данных по которым предполагается даже мнимая возможность поиска. Перед планированим БД, рекомендуется прочитать про нормализацию баз данных

Зачем нормализовать базу данных?
У Вас может возникнуть вопрос – а зачем вообще нормализовать базу данных и бороться с этой избыточностью?


Дело в том, что избыточность данных создает предпосылки для появления различных аномалий, снижает производительность, и делает управление данными не гибким и не очень удобным. Отсюда можно сделать вывод, что нормализация нужна для:

Устранения аномалий
Повышения производительности
Повышения удобства управления данными

Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А теперь покажите, как будет выглядеть ваш первый вариант, если, например, модель 1 в комплектации 1 может иметь двигатели 2 и 3, в комплектации 3 двигатели 3 и 4, а в остальных комплектациях она не выпускается. А модель 2 выпускается в комплектациях 2, 3, 4 и 5, но двигатель тоже зависит от комплектации. А если это всё ещё зависит и от поколения?
Ответ написан
Комментировать
New_Horizons
@New_Horizons
Бред:
Ну типа того наверное
5ff70c4128fc6782528258.png
Ответ написан
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
4 таблицы

Manufacture производитель
Model/stage
Options кузов части и прочее
Parts Список всех частей из опций

Плюс несколько вспомогательных таблиц от оригинального производителя чисто для удобства. Бухгалтерию и вашу машинерия опустил
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы