Versi SQL yang lebih baru (2005+) tampaknya lebih baik dalam mengoptimalkan penggunaan tampilan. Tampilan terbaik untuk mengkonsolidasikan aturan bisnis. EG: tempat saya bekerja, kami memiliki basis data produk telekomunikasi. Setiap produk ditugaskan ke rateplan, dan rateplan itu dapat ditukar, dan tarif pada rateplan dapat diaktifkan / dinonaktifkan karena tarif dinaikkan atau dimodifikasi.
Untuk membuatnya mudah, kita dapat membuat tampilan bersarang. Tampilan pertama hanya menggabungkan rateplan ke tarifnya menggunakan tabel apa pun yang diperlukan, dan mengembalikan data yang diperlukan tingkat tampilan berikutnya. Tampilan kedua hanya dapat mengisolasi rateplan aktif dan laju aktifnya. Atau, hanya tarif pelanggan. Atau tarif karyawan (untuk diskon karyawan). Atau tarif bisnis vs. pelanggan residensial. (rateplan bisa menjadi rumit). Intinya adalah, pandangan dasar memastikan logika bisnis keseluruhan kami untuk rateplan dan tarif digabung bersama dengan benar di satu lokasi. Lapisan tampilan selanjutnya memberi kita lebih banyak fokus pada rateplan spesifik (tipe, aktif / tidak aktif, dll).
Saya setuju bahwa tampilan dapat membuat debugging menjadi berantakan jika Anda membuat permintaan dan tampilan secara bersamaan. Tetapi, jika Anda menggunakan tampilan yang dicoba-n-tepercaya, itu membuat proses debug lebih mudah. Anda tahu bahwa pandangan telah melalui dering, jadi Anda tahu itu kemungkinan besar tidak menyebabkan masalah.
Namun, masalah bisa muncul dengan pandangan Anda. "Bagaimana jika suatu produk hanya dikaitkan dengan rateplan yang tidak aktif?" atau "bagaimana jika rateplan hanya memiliki tingkat tidak aktif di atasnya?" Nah, itu bisa tertangkap di level front-end dengan logika yang menangkap kesalahan pengguna. "Kesalahan, produk berada pada rateplan yang tidak aktif ... mohon perbaiki". Kami juga dapat menjalankan audit kueri untuk memeriksa ulang sebelum menjalankan penagihan. (pilih semua paket dan gabung kiri ke tampilan rateplan aktif, hanya kembalikan paket yang tidak mendapatkan rateplan aktif sebagai masalah yang perlu ditangani).
Hal yang baik tentang hal ini adalah pandangan yang memungkinkan Anda menyingkat permintaan untuk pelaporan, penagihan, dll. Anda dapat memiliki tampilan akun pelanggan, kemudian tampilan tingkat 2 dari pelanggan yang aktif saja. Tim itu dengan tampilan alamat pelanggan. Tim yang dengan tampilan produk (bergabung dengan produk apa yang dimiliki pelanggan). Tim itu untuk melihat produk rateplan. Tim itu dengan tampilan fitur produk. Lihat, lihat, lihat, setiap percobaan-n-kesalahan untuk memastikan integritas. Permintaan akhir Anda menggunakan tampilan sangat kompak.
edit:
Sebagai contoh bagaimana tampilan akan lebih baik daripada sekadar kueri tabel yang datar ... kami memiliki kontraktor temporer yang datang untuk membuat beberapa perubahan. Mereka mengatakan kepadanya bahwa ada beberapa hal yang dilihat, tetapi dia memutuskan untuk meratakan semua pertanyaannya. Penagihan menjalankan beberapa pertanyaannya. Mereka terus mendapatkan banyak rateplan dan tarif untuk berbagai hal. Ternyata pertanyaannya kriteria yang hilang hanya memungkinkan tarif untuk menagih jika mereka berada di antara tanggal awal & akhir rencana tingkat seharusnya menggunakan tarif itu / mereka selama. Ups. Jika dia menggunakan pandangan itu, itu sudah memperhitungkan logika itu.
Pada dasarnya, Anda harus mempertimbangkan kinerja vs kewarasan. Mungkin Anda bisa melakukan semua jenis barang mewah untuk meningkatkan kinerja database. Tetapi, jika itu berarti mimpi buruk bagi orang baru untuk mengambil alih / mempertahankan, apakah itu benar-benar layak? Apakah itu benar-benar layak bagi orang baru yang harus bermain memukul-mondar-mandir harus menemukan semua pertanyaan yang perlu untuk mengubah logika mereka (dan risiko dia lupa / gemar meraba mereka) b / c seseorang memutuskan bahwa pandangan "buruk" dan tidak menggabungkan beberapa logika bisnis inti menjadi logika yang dapat digunakan di 100 pertanyaan lainnya? Ini benar-benar terserah pada bisnis Anda dan tim IT / IS / DB Anda. Tapi, saya lebih suka kejelasan dan konsolidasi sumber tunggal daripada kinerja.