Подскажите, как лучше решить следующий вопрос.
Имеется необходимость создать БД для следующего функционала:
Есть таблица авто, есть таблица комплектующих, у авто может быть неограниченное количество комплектующих.
Придумал 2 способа:
1. Создать три таблицы: авто, авто_комплектующее, комплектующие (many-to-many).
2. Создать в таблице авто поле "комплектующие" и в него сохранять id комплектующих в json формате.
Если я правильно понял, то первый способ приоритетный т.к. используя второй, я могу удалить строку из комплектующих, а в таблице авто будет хранится id на несуществующую строку. В итоге необходимо будет сделать некий функционал для удаления, проверяющий используется ли удаляемый id в авто таблице. Но в этом варианте я просто могу пройти циклом по id и получить нужные для меня данные, к примеру цену.
По первому способу есть следующий вопрос:
Я могу добавить авто, сохранить его. Перейти в action который добавляет конкретному авто комплектующие и все будет ок.
Но если я хочу сделать добавление авто и комплектующих одной операцией, то не пойму как мне это реализовать, ведь я не могу получить следующий auto_increment в таблице.
Немного псевдокода:
Код: Выделить всё
Транзакция добавления авто и его комплектующих
Добавление авто,
Сохранение авто,
Получение сохраненного авто (id),
Добавление комплектующих в таблицу авто_комплектующее (т.к. предыдущим пунктом я получил id автомобиля).