Создание записей в связанных таблицах — через MySQL триггеры или в коде приложения? Имеем БД MySQL (InnoDB) или похожую.
Предположим данные разбиты на две таблицы: user и user_profile. Соответственно данные в user_profile связаны 1 к 1 с данными в user.
Программисты, в таких случая, чаще всего в коде в транзакцию заворачивают создание записи в user, с последующим созданием связанной записи в user_profile.
DBA-щики (например) настаивают на том, что правильнее это выносить в БД (database first), повесить триггер, который при создании записи в user, создаст связанную запись в user_profile.
У способа через код такие плюсы и минусы:
+ Наглядность. Любой программист сразу понимает, что вот тут создается запись и другие записи в связанных таблицах.
+ Поддержка любой БД
- Все должны всегда помнить, что надо создавать записи в связанных таблицах (их может быть несколько, они могут меняться).
- Новые люди могут не "уметь транзакции", не знать о всех связях и т.д.
- Использование БД как "тупое" хранилище при кучи возможностей.
У способа через БД такие плюсы и минусы:
+ 100% консистентность
+ Упрощение кода приложения - коду кодово, базе - базово.
- Для новых программистов такое поведение может оказаться "магией".
- Поддерживается не всеми БД (наверно)
- Есть вероятность забыть добавить триггер при добавлении новой связанной таблицы
- При переезде на другую БД надо помнить о триггерах.

21 Авг 2019 в 06:19
209 +1
0
Ответы
1

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

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

20 Апр в 13:20
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 588 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир