"Optimalisasi prematur adalah akar dari semua kejahatan (sebagian besar, bagaimanapun) dalam pemrograman komputer" - Donald Knuth
Basis datanya persis seperti itu; lapisan data aplikasi Anda. Tugasnya adalah menyediakan aplikasi Anda dengan data yang diminta, dan menyimpan data yang diberikan kepadanya. Aplikasi Anda adalah tempat untuk meletakkan kode yang benar-benar berfungsi dengan data; menampilkannya, memvalidasinya, dll.
Sementara sentimen dalam baris judul sangat mengagumkan, dan akurat sampai titik tertentu (seluk-beluk penyaringan, proyeksi, pengelompokan dll harus dalam jumlah besar kasus diserahkan kepada DB), definisi "baik" mungkin di memesan. Banyak tugas yang bisa dijalankan oleh SQL Server dengan tingkat kinerja tinggi, tetapi tugas yang bisa Anda contohkanSQL Server melakukannya dengan benar dengan cara yang terisolasi dan berulang sangat sedikit. SQL Management Studio adalah IDE basis data yang hebat (terutama mengingat opsi lain yang pernah saya gunakan seperti TOAD), tetapi ia memiliki keterbatasan, pertama di antaranya adalah hampir semua yang Anda gunakan (atau kode prosedural yang Anda jalankan di DB di bawahnya) secara definisi merupakan "efek samping" (mengubah keadaan yang berada di luar domain ruang memori proses Anda). Selain itu, kode prosedural dalam SQL Server baru saja, dengan IDE dan alat terbaru, dapat diukur cara kode dikelola dapat menggunakan metrik cakupan dan analisis jalur (sehingga Anda dapat menunjukkan bahwa pernyataan khusus ini jika ditemui oleh tes X , Y, dan Z, dan uji X dirancang untuk membuat kondisi benar dan jalankan setengahnya sementara Y dan Z mengeksekusi "lain" . Itu, pada gilirannya, mengasumsikan Anda memiliki tes yang dapat mengatur database dengan keadaan awal tertentu, menjalankan kode prosedural database melalui beberapa tindakan, dan menegaskan hasil yang diharapkan.
Semua ini jauh lebih sulit dan terlibat daripada solusi yang disediakan oleh sebagian besar lapisan akses data; menganggap layer data (dan, dalam hal ini, DAL) tahu bagaimana melakukan pekerjaan mereka ketika diberi input yang benar, dan kemudian menguji bahwa kode Anda memberikan input yang benar. Dengan menjaga kode prosedural seperti SP dan memicu keluar dari DB dan bukannya melakukan hal-hal semacam itu dalam kode aplikasi, kata kode aplikasi lebih mudah untuk dilakukan.