Saya membaca Alkitab SQL Server 2008 dan saya membahas bagian tampilan. Tetapi penulis tidak benar-benar menjelaskan tujuan dari pandangan. Apa kegunaan yang baik untuk tampilan? Haruskah saya menggunakannya di situs web saya dan apa manfaatnya?
Saya membaca Alkitab SQL Server 2008 dan saya membahas bagian tampilan. Tetapi penulis tidak benar-benar menjelaskan tujuan dari pandangan. Apa kegunaan yang baik untuk tampilan? Haruskah saya menggunakannya di situs web saya dan apa manfaatnya?
Jawaban:
Penggunaan lain yang tampaknya tidak disebutkan oleh jawaban sebelumnya adalah penerapan perubahan struktur tabel yang lebih mudah.
Misalnya, Anda ingin menghentikan tabel ( T_OLD) yang berisi data untuk pengguna aktif, dan sebagai gantinya menggunakan tabel baru dengan data serupa (bernama T_NEW) tetapi tabel yang memiliki data untuk pengguna aktif dan tidak aktif, dengan satu kolom tambahan active.
Jika sistem Anda memiliki trilyun kueri SELECT whatever FROM T_OLD WHERE whatever, Anda memiliki dua pilihan untuk peluncuran:
1) Cold Turkey - Ubah DB, dan pada saat yang sama, ubah, uji dan lepaskan banyak potongan kode yang berisi query tersebut. SANGAT sulit dilakukan (atau bahkan dikoordinasikan), sangat berisiko. Buruk.
2) Bertahap - ubah DB dengan membuat T_NEWtabel, lepaskan T_OLDtabel dan sebagai gantinya buat TAMPILAN disebut T_OLDyang meniru T_OLDtabel 100% (misalnya kueri tampilan adalahSELECT all_fields_except_active FROM T_NEW WHERE active=1 ).
Itu akan memungkinkan Anda untuk menghindari melepaskan kode APAPUN yang saat ini dipilih T_OLD, dan melakukan perubahan untuk memigrasi kode dari T_OLDmenjadi T_NEWdi waktu luang.
Ini adalah contoh sederhana, ada orang lain yang lebih terlibat.
PS Di sisi lain, Anda mungkin harus memiliki API prosedur tersimpan daripada kueri langsung dari T_OLD, tetapi itu tidak selalu terjadi.
(Disalin dari tutorial pertama yang muncul dalam pencarian Google (tautan sekarang mati), tetapi memiliki semua manfaat yang saya sendiri ketik secara manual.)
Tampilan memiliki keuntungan sebagai berikut:
- Keamanan - Tampilan dapat dibuat dapat diakses oleh pengguna sementara tabel yang mendasarinya tidak dapat diakses secara langsung. Ini memungkinkan DBA untuk memberi pengguna hanya data yang mereka butuhkan, sambil melindungi data lain dalam tabel yang sama.
- Kesederhanaan - Tampilan dapat digunakan untuk menyembunyikan dan menggunakan kembali kueri kompleks.
- Penyederhanaan atau Klarifikasi Nama Kolom - Tampilan dapat digunakan untuk memberikan alias pada nama kolom agar lebih mudah diingat dan / atau bermakna.
- Batu Loncatan - Tampilan dapat memberikan batu loncatan dalam kueri "multi-level". Misalnya, Anda dapat membuat tampilan kueri yang menghitung jumlah penjualan yang dilakukan setiap penjual. Anda kemudian dapat meminta tampilan tersebut untuk mengelompokkan staf penjualan menurut jumlah penjualan yang telah mereka lakukan.
Beberapa alasan dari Wikipedia :
Tampilan dapat memberikan keuntungan dibandingkan tabel:
VIEWS dapat digunakan sebagai bagian SELECT / CODE yang dapat digunakan kembali, yang dapat disertakan dalam pemilihan / kueri lain untuk digabungkan, dan menggunakan berbagai filter berbeda, tanpa harus membuat ulang seluruh SELECT setiap saat.
Ini juga menempatkan logika di satu lokasi, sehingga Anda tidak perlu mengubahnya di seluruh basis kode.
Silahkan lihat
Pilihan Antara Stored Procedures, Functions, Views, Triggers, Inline SQL
Keindahan utama tampilan adalah dapat digunakan seperti tabel dalam banyak situasi, tetapi tidak seperti tabel, tampilan dapat merangkum penghitungan yang sangat kompleks dan gabungan yang umum digunakan. Itu juga dapat menggunakan hampir semua objek di db kecuali untuk prosedur yang tersimpan. Tampilan paling berguna ketika Anda selalu perlu untuk menggabungkan sekumpulan tabel yang sama, katakanlah Pesanan dengan Detail Pesanan untuk mendapatkan bidang kalkulasi ringkasan, dll.
Tampilan adalah lapisan abstraksi, dan melakukan apa yang dilakukan lapisan abstraksi yang baik, termasuk merangkum skema database dan melindungi Anda dari konsekuensi mengubah detail implementasi internal.
Ini sebuah antarmuka.
Berikut adalah salah satu penggunaan umum menggunakan tampilan untuk membatasi entitas dengan beberapa kriteria.
Tabel: USERS berisi semua pengguna
Tampilan: ACTIVE_USERS berisi semua pengguna kecuali mereka yang ditangguhkan, diblokir, menunggu untuk diaktifkan dan tidak memenuhi kriteria apa pun yang dapat Anda pilih untuk ditentukan di masa mendatang sebagai bagian dari persyaratan aktif. Hal ini membuat Anda tidak perlu menghapus baris dari tabel USERS jika Anda memilih untuk tidak melakukannya karena ACTIVE_USERS selalu dapat menyembunyikan baris yang tidak diinginkan.
Dengan cara ini, Anda dapat menggunakan tabel di halaman manajemen pengguna, tetapi aplikasi lainnya dapat menggunakan ACTIVE_USERS karena mereka mungkin satu-satunya pengguna yang dapat menjalankan proses dan mengakses / mengubah data.
Tampilan dapat memungkinkan Anda menggabungkan data dari beberapa tabel berbeda dan memformatnya (menggabungkan bidang, memberikan nama bidang yang lebih bermakna, dll.) Sehingga lebih mudah bagi pengguna akhir. Mereka adalah abstraksi dari model database. Mereka juga dapat digunakan untuk memberi pengguna akses ke data dalam tabel tanpa memberi mereka akses langsung ke tabel itu sendiri.
Berikut adalah beberapa dari banyak alasan menggunakan view daripada tabel secara langsung
Dari imexploring.com
Daftar kecil alasan / penggunaan umum:
gunakan mereka untuk mengubah format atau 'tampilan' data (yaitu Anda dapat menggabungkan nama depan dan belakang bersama-sama)
melakukan penghitungan atau pencarian data lainnya
mendenormalisasi data (mengekstrak data dari beberapa tabel ke satu tempat)
Pandangan itu jahat! Hindari mereka jika memungkinkan dan gunakan hanya untuk alasan yang disebutkan oleh DVK - migrasi data sementara.
Anda harus memahami bahwa dalam database dengan 100 tabel sulit untuk mengingat tujuan setiap tabel. Sekarang, jika Anda menambahkan 300 tampilan lagi di sini, itu akan menjadi kekacauan total. Dari pada 'View lovers' cenderung menggunakan tampilan bersarang dan kemudian menggunakan tampilan bersarang dalam prosedur yang tersimpan. Saya secara pribadi bekerja sekarang dengan database di mana ada Tampilan yang bersarang secara mendalam 4 kali! Jadi untuk memahami logika paling sederhana dari prosedur tersimpan, saya harus melalui semua tampilan terlebih dahulu.