Я вообще больше про GRASP. Вполне понятная последовательна штука. Не знаю что вы против имеете. Я отсылал к видам кохижена. Даже не к каплингу(он же связи вроде как про которые я не писал но вы их увидели).
Окей как определить когда и где граница? Просто 90% программистов не слышали про кохижн. И 99% лепят случайный или логический но не функцональный. Я уж молчу что используют классы но пишут процедурно исключительно.
Так это же идеальный показатель проблем в дизайне. И именно проблема с консистентностью данных. Я вот не разу не видел чтобы при таких связях кто то лочил все связанные записи. А значит решение принимается на устаревших потенциально данных и приводит к повреждениям данных. Я вот и не понимаю зачем своими руками себе данные ломать.
Например заказ. И связан с айтемами. Мы считаем общию цену и по ней принимаем решение. Но в между тем когда мы прочитали цену и приняли решение цена изменилась. Тоесть мы приняли неверное решение. Или количество товара изменилось.
Транзакция обеспечивает всё или ничего. Она не гарантирует что данные которые были в транзакции не менялись. Плюс транзакция не влияет на то что вы ПРОЧИТАЛИ и использовали для записи. А то что вы ПРОЧИТАЛИ может уже быть другим сразу после чтения и перед тем как вы записали реакцию на изменившиеся данные