Многие хранимые процедуры не зависят от приложения, но некоторые могут зависеть от приложения. Например, хранимые процедуры CRUD (создание, выбор, обновление, удаление) могут проходить через приложения. В частности, вы можете добавить логику аудита (иногда это делается в триггерах, но есть предел того, насколько сложным вы можете стать в триггерах). Если в вашем магазине программного обеспечения есть стандартная архитектура какого-либо типа, для среднего уровня может потребоваться хранимая процедура для создания / выбора / обновления / удаления из базы данных независимо от приложения, в этом случае процедура является общей.
В то же время могут быть некоторые полезные способы просмотра данных, например, GetProductsSoldBySalesPerson и т. Д., Которые также не зависят от приложения. У вас может быть несколько таблиц подстановки для некоторых полей, таких как отдел, адрес и т. Д., Поэтому может быть процедура для возврата представления таблицы со всеми текстовыми полями. Т.е. вместо SalesPersonID, SaleDate, CustomerID, DepartmentID, CustomerAddressID процедура возвращает представление SalesPersonName, SaleDate, CustomerName, DepartmentName, CustomerAddress. Это также может быть использовано в разных приложениях. Система взаимоотношений с клиентами будет требовать имя клиента / адрес / другие атрибуты, как и система выставления счетов. Так что то, что выполняло все объединения и собирало всю информацию о клиенте в одном запросе, вероятно, будет использоваться во всех приложениях. По общему признанию, создание способов просмотра данных является областью представления, но часто люди используют хранимые процедуры для этого.
Таким образом, в основном, при удалении из таблицы вам нужно удалить из 3 или 4 других таблиц, чтобы обеспечить целостность данных. логика слишком сложна для триггера? Тогда может быть важна хранимая процедура, которую все приложения используют для удаления. То же самое касается вещей, которые нужно сделать при создании. Если есть общие объединения, которые всегда выполняются, может иметь смысл иметь одну хранимую процедуру для выполнения всех объединений. Тогда, если позже вы измените таблицы вокруг, вы можете оставить процедуру такой же и просто изменить логику там.