Это полностью зависит от вашей среды. Ответ на этот вопрос на самом деле не проблема кодирования или даже проблема анализа, а бизнес-решение.
Если ваша база данных поддерживает только одно приложение и достаточно тесно интегрирована с ним, то из соображений гибкости лучше поместить свою логику в прикладную программу. В этих обстоятельствах обработка базы данных просто как простого хранилища данных с использованием общих функциональных возможностей немного теряет вас и повышает гибкость - с поставщиками, реализацией, развертыванием и многим другим - и многие из аргументов пуристов, которые толпуют «базы данных для данных», являются демонстративно правда.
С другой стороны, если вы работаете с корпоративной базой данных, которая обычно может быть идентифицирована по нескольким путям доступа, то очень рекомендуется, чтобы вы смогли максимально обезопасить систему безопасности. По крайней мере, все соответствующие ограничения должны быть включены, и, если возможно, доступ к данным должен осуществляться только через представления и процедуры. Скулящие программисты должны игнорироваться в этих случаях как ...
- С корпоративной базой данных актив является ценным, и неверные данные или действия могут иметь опасные для бизнеса последствия. Ваша главная задача - защитить бизнес, а не то, насколько удобный доступ для ваших кодировщиков.
- Такие базы данных по определению доступны более чем одному приложению. Вам необходимо использовать абстракцию, предлагаемую хранимыми процедурами, чтобы база данных могла быть изменена при обновлении приложения A, и у вас нет ресурса для обновления приложения B.
- Аналогичным образом, инкапсуляция бизнес-логики в SP, а не в коде приложения, позволяет вносить изменения в такую логику в рамках бизнеса проще и надежнее, чем если бы такая логика была встроена в код приложения. Например, если расчет налога изменяется, он менее трудоемок и более надежен, если расчет необходимо изменить в одном SP, а не в нескольких приложениях. Основное правило здесь заключается в том, что бизнес-правило должно быть реализовано в самой близкой точке к данным, где оно уникально - поэтому, если у вас есть специализированное приложение, тогда логика для этого приложения может быть реализована в этом приложении, но логика более широко применима. чтобы бизнес был реализован в СП.
В вашем случае теперь у вас есть несколько приложений, обращающихся к одной и той же базе данных, поэтому вы должны перемещать функции логики и аудита с уровня приложения в базу данных. Сам я, как правило, в любом случае помещал бы функции аудита в саму базу данных, потому что, если меня когда-либо призовут расследовать какую-то проблему мошенничества (а это случалось не раз), я просто чувствую, что могу встать и быть уверенным в своих выводах с гораздо большим Уверенность, чем если бы это было на уровне приложений - просто так меньше возможностей для предостережений.
Кодеры, которые погружаются в религиозные войны из-за использования SP или нет, как правило, работали только в одной или другой среде, поэтому они экстраполируют свой ограниченный опыт на чугунную позицию - которая действительно будет совершенно оправданной и правильной в контексте. из которого они приходят, но скучает по общей картине. Как всегда, вы должны принять решение о потребностях бизнеса / клиентов / пользователей и , а не о том, какой метод кодирования вы предпочитаете.