Существует несколько веских причин, по которым следует избегать предоставления доступа к таблице очень многим именам входа, в том числе приложениям, и они стимулируют использование хранимых процедур. (Обычно я не приписываю никакого значения использованию SP по соображениям производительности - SQL Server кэширует даже планы запросов adhoc).
Хранимые процедуры дают вашей базе гораздо больше возможностей для определения границ ее интерфейса. Во многих случаях представлений недостаточно для управления интерфейсом.
Любая инфраструктура, построенная исключительно на таблицах и представлениях (обратите внимание, что многие платформы могут основываться на результатах SP), будет серьезно ограничена, чтобы позволить вашей базе данных защитить себя и контролировать себя.
В качестве простого примера, ни таблицы, ни представления не могут быть параметризованы. Если у вас очень большая таблица или представление и вы хотите, чтобы все пользователи указывали определенный набор критериев фильтрации (например, дату моментального снимка или дату вступления в силу), это невозможно сделать в интерфейсе вызова базы данных. Фреймворк может отправлять запросы за все время. Если таблица / представление не отображается, и единственный интерфейс - через SP или табличную UDF, то должны быть предоставлены параметры для этого SP или UDF MUST , удовлетворяющие тем самым потребности вашей базы данных, чтобы гарантировать используется правильно.
Другие примеры, где представления могут работать или не работать, включают в себя скрытие информации о конфиденциальности для определенных пользователей, скрытие внутренних ключей, скрытие внутренних деталей реализации и применение сложных правил безопасности.
Что касается сценариев создания схемы базы данных, включая объекты в правильном порядке зависимостей, для этого есть несколько инструментов (и генерируются сценарии изменений), в том числе Red Gate SQL Compare и Apex SQLScript.