Мы работаем над сложной базой данных и клиентским интерфейсом в течение последних 18 месяцев. Мы регулярно добавляем новые функциональные возможности в это приложение, и теперь оно ежедневно используется десятками пользователей во всех наших офисах, включая сайты и за рубежом. Это просто чтобы сказать вам, что это РЕАЛЬНОЕ приложение с РЕАЛЬНОЙ базой данных.
До сих пор нам еще не приходилось писать какие-либо хранимые процедуры, кроме как на временной основе для решения незначительных проблем между версиями клиента и обновленной моделью базы данных (где старая версия клиента не будет корректно обновлять вновь созданное поле, пока все не будут устанавливает самую новую версию).
Точно так же нам все еще не нужны были триггеры. Фактически, единственными SP и триггерами являются системные или добавленные для репликации.
У меня странное ощущение, что SP и триггеры в основном используются для компенсации значений по умолчанию при проектировании базы данных и / или попыток обойти правила проектирования базы данных, когда разработчики считают, что оптимизация базы данных должна противодействовать нормализации базы данных.
Проблема в том, что эти инструменты отнимают много времени (как для разработки, так и для обслуживания). Каждый разработчик должен быть очень осторожным при их использовании, помня о том, что они являются наиболее «дорогими» элементами для хранения в базе данных.
Можем ли мы считать, что наличие в базе данных ни одного или нескольких хранимых процедур / триггеров является хорошим показателем уровня ее нормализации и / или стоимости обслуживания кода?
РЕДАКТИРОВАТЬ:
Некоторые из вас предоставили справедливые аргументы в пользу использования как триггеров, так и SP. Но я продолжаю думать, что большую часть времени эти инструменты используются ненадлежащим или чрезмерным образом. Сколько триггеров настроено для обновления некоторых полей таблицы или для пересчета итогов или других агрегированных данных? Сколько SP используется для создания временных таблиц для сообщений о проблемах? Это две из многих ситуаций, когда разработчики используют эти инструменты, и я думаю, что это обычно иллюстрирует недостатки проектирования / нормализации базы данных.
Некоторые другие признают, что использование SP и триггеров должно строго контролироваться. Я тоже считаю это необходимым.
Я должен признаться, что я пытаюсь найти некоторые отстаивающие аргументы, когда все эти фанаты SQL, работающие над другими нашими базами данных, смотрят на нас свысока, говоря своим друзьям: «Вы знаете, что? Они даже не используют SP и триггеры! Ха-ха! «