"Передчасна оптимізація - корінь усього зла (більшість із нього, все одно) в комп'ютерному програмуванні" - Дональд Кнут
База даних саме така; рівень даних вашої програми. Його завдання полягає в наданні вашій програмі запитуваних даних та зберіганні наданих їй даних. У вашій програмі є місце для введення коду, який фактично працює з даними; її відображення, перевірку та ін.
Незважаючи на те, що настрої в заголовковому рядку є захоплюючими і точними до точного (суцільна зернистість фільтрування, проектування, групування тощо повинна в переважній кількості випадків залишатися в БД), визначення "добре" може бути в замовлення. Завдань, які SQL Server може виконувати з високим рівнем продуктивності, безліч, але завдання, які ви можете продемонструватищо SQL Server робить правильно ізольованим, повторюваним чином, дуже мало. SQL Management Studio - це чудова IDE бази даних (особливо враховуючи інші параметри, з якими я працював, як TOAD), але вона має свої обмеження, спочатку серед них є те, що ви майже все використовуєте для цього (або будь-який процедурний код, який ви виконуєте в БД внизу) за визначенням є "побічним ефектом" (зміна стану, що лежить поза домену простору пам'яті вашого процесу). Крім того, процедурний код у SQL Server лише зараз, за допомогою останніх IDE та інструментів, можна виміряти способом керованого коду, використовуючи метрику покриття та аналіз шляхів (так що ви можете продемонструвати, що це конкретно, якщо з твердженням зустрічаються тести X , Y і Z, і тест X призначений для того, щоб виправдати умову і виконати цю половину, тоді як Y і Z виконують "else" . Це, у свою чергу, передбачає, що у вас є тест, який може встановити базу даних у певному стартовому стані, виконати процедурний код бази даних за допомогою певних дій та стверджувати очікувані результати.
Все це набагато складніше та задіяне, ніж рішення, яке надає більшість шарів доступу до даних; припустимо, що рівень даних (і, з цього приводу, DAL) знає, як виконати свою роботу, коли вводиться правильний ввід, а потім перевірити, чи ваш код забезпечує правильне введення. Зберігаючи процедурний код, наприклад, SP та тригери поза БД і замість цього виконуючи такі типи речей у коді програми, зазначений код програми набагато простіше здійснити.