Mengapa Anda membuat tampilan dalam database?

267

Kapan dan Mengapa seseorang memutuskan bahwa mereka perlu membuat Tampilan di basis data mereka? Mengapa tidak menjalankan prosedur tersimpan biasa atau memilih?

Tukang obat
sumber
Periksa jawaban saya untuk pertanyaan serupa, semoga membantu!
Loukan ElKadi

Jawaban:

464

Tampilan memberikan beberapa manfaat.

1. Tampilan dapat menyembunyikan kerumitan

Jika Anda memiliki kueri yang mengharuskan bergabung dengan beberapa tabel, atau memiliki logika atau perhitungan yang rumit, Anda bisa mengode semua logika itu ke dalam tampilan, lalu memilih dari tampilan seperti halnya Anda menggunakan tabel.

2. Tampilan dapat digunakan sebagai mekanisme keamanan

Tampilan dapat memilih kolom dan / atau baris tertentu dari tabel (atau tabel), dan izin ditetapkan pada tampilan alih-alih tabel yang mendasarinya. Ini memungkinkan hanya memunculkan data yang perlu dilihat pengguna.

3. Tampilan dapat menyederhanakan kode legacy pendukung

Jika Anda perlu memperbaiki tabel yang akan merusak banyak kode, Anda bisa mengganti tabel dengan tampilan dengan nama yang sama. Tampilan menyediakan skema yang sama persis dengan tabel asli, sementara skema yang sebenarnya telah berubah. Ini menjaga kode warisan yang referensi tabel tidak rusak, memungkinkan Anda untuk mengubah kode warisan di waktu luang Anda.

Ini hanyalah beberapa dari sekian banyak contoh bagaimana pandangan dapat bermanfaat.

Dave Carlile
sumber
84
item 3 adalah alasan yang tampaknya belum ada orang lain yang menunjukkannya
MedicineMan
2
Saya pikir poin 3 lebih dari stop gap daripada yang lainnya. Pada akhirnya ketika Anda mendapatkan putaran untuk memperbarui kode lawas, Anda tidak hanya harus mengubah kode di belakang tampilan tetapi juga semua kode yang telah dibangun di atas tampilan. 2cents saya
super9
3
3 Benar-benar properti pandangan paling kuat. Itu yang membantu memberikan independensi data logis fakta bahwa Anda dapat memberikan antarmuka ke DB independen dari basis data logis yang mendasarinya adalah konsep yang sangat kuat.
Falaina
1
@ John Hutang teknis yang timbul ini harus dilunasi cepat atau lambat tidak? Dalam 10 tahun mungkin tidak masalah bagi insinyur yang menulisnya 10 tahun yang lalu tetapi itu penting bagi perusahaan.
super9
Mengubah DB utama Anda dan semuanya tergantung pada itu adalah pilihan yang buruk untuk dibuat karena Anda mungkin 'membutuhkannya dalam 10 tahun'. Utang teknis tidak dapat dihindari dengan cara apa pun, hanya jika biaya yang diharapkan untuk memperbaikinya nanti lebih dari biaya pasti untuk memperbaikinya sekarang.
Tn. Boy
88

Antara lain, bisa digunakan untuk keamanan. Jika Anda memiliki tabel "pelanggan", Anda mungkin ingin memberi semua staf penjualan Anda akses ke bidang nama, alamat, kode pos, dll., Tetapi tidak dengan credit_card_number. Anda dapat membuat tampilan yang hanya menyertakan kolom yang memerlukan akses lalu memberi mereka akses pada tampilan.

Graeme Perrow
sumber
menarik. Keamanan adalah jawaban yang bagus. 'Hal lain' apa yang ada dalam benak Anda?
MedicineMan
13
Saya berasumsi bahwa jawaban lain untuk pertanyaan ini akan menggambarkan "hal-hal lain". :-)
Graeme Perrow
Select name, address, zipcode from customertidak akan melayani tujuan, bukan creating a view?
PPB
@ ParranBilurkar Ya, jika Anda sepenuhnya mengontrol kueri yang dijalankan pengguna. Jika pengguna memiliki kemampuan untuk menjalankan kueri mereka sendiri (melalui beberapa program SQL interaktif atau menulis skrip mereka sendiri), mereka dapat menjalankan select * from customeryang memberi mereka akses ke semuanya. Jika Anda memberi mereka akses ke tampilan dan bukan tabel, mereka tidak bisa mengakses bidang yang tidak ada dalam tampilan.
Graeme Perrow
38

Tampilan adalah enkapsulasi kueri. Pertanyaan yang diubah menjadi tampilan cenderung rumit dan menyimpannya sebagai tampilan untuk digunakan kembali dapat menguntungkan.

Andrew Hare
sumber
Jadi, Anda ingin membuat tampilan ketika Anda memiliki pertanyaan yang rumit? Seberapa rumit suatu query, berapa ambangnya? Apa yang Anda dapatkan dari melihatnya?
MedicineMan
4
Betapa rumitnya pilihan pribadi, tidak ada ambang batas yang ditentukan. Anda akan sering menggunakan tampilan jika Anda tidak ingin menduplikasi logika di beberapa aplikasi atau titik yang berbeda di aplikasi Anda misalnya. Dengan menjadikannya tampilan, Anda menyembunyikan logika itu dan dapat membaginya dengan mudah.
Chris Cameron-Mills
1
Anda tidak dapat melakukan hal yang sama dengan prosedur tersimpan yang memiliki pilih? salahkah saya memikirkan prosedur tersimpan sebagai cara untuk menyimpan logika kueri yang kompleks? haruskah pertanyaan kompleks dilakukan dalam tampilan alih-alih prosedur tersimpan? Apa keuntungan dari prosedur tersimpan di sini?
MedicineMan
2
@MedicineMan - Prosedur tersimpan mengembalikan set hasil sedangkan tampilan mewakili tabel virtual yang memungkinkan Anda untuk digunakan sebagai tabel di kueri lain.
Andrew Hare
1
Saya pikir titik ini tentang hasil yang ditetapkan vs tabel virtual tampaknya menjadi titik kunci yang saya tidak mengerti.
MedicineMan
28

Saya biasanya membuat tampilan untuk mende-normalkan dan / atau mengagregasi data yang sering digunakan untuk tujuan pelaporan.

EDIT

Dengan cara elaborasi, jika saya memiliki database di mana beberapa entitas adalah orang, perusahaan, peran, tipe pemilik, pesanan, detail pesanan, alamat dan telepon, di mana tabel orang menyimpan karyawan dan kontak serta alamat dan tabel telepon menyimpan nomor telepon baik untuk orang maupun perusahaan, dan tim pengembangan ditugaskan untuk menghasilkan laporan (atau membuat data pelaporan dapat diakses oleh non-pengembang) seperti penjualan berdasarkan karyawan, atau penjualan berdasarkan pelanggan, atau penjualan berdasarkan wilayah, penjualan berdasarkan bulan, penjualan berdasarkan bulan , pelanggan oleh negara, dll. Saya akan membuat satu set pandangan yang mende-normalkan hubungan antara entitas basis data sehingga tampilan yang lebih terintegrasi (tidak ada kata pun dimaksudkan) dari entitas dunia nyata tersedia. Beberapa manfaat dapat meliputi:

  1. Mengurangi redundansi dalam kueri penulisan
  2. Menetapkan standar untuk entitas terkait
  3. Memberikan peluang untuk mengevaluasi dan memaksimalkan kinerja untuk penghitungan dan penggabungan yang rumit (mis. Pengindeksan pada tampilan Schemabound di MSSQL)
  4. Membuat data lebih mudah diakses dan intuitif untuk anggota tim dan non-pengembang.
cmsjr
sumber
1
dapatkah Anda menjelaskan hal ini? Jawaban Anda sedang dipilih cukup sedikit, tapi saya tidak mendapatkan nilai yang tampaknya orang lain
MedicineMan
11

Beberapa alasan: Jika Anda memiliki gabungan yang rumit, terkadang yang terbaik adalah memiliki pandangan sehingga setiap akses akan selalu memiliki gabungan yang benar dan pengembang tidak harus mengingat semua tabel yang mungkin mereka butuhkan. Biasanya ini untuk aplikasi keuangan di mana akan sangat penting bahwa semua laporan keuangan didasarkan pada set data yang sama.

Jika Anda memiliki pengguna yang ingin membatasi catatan yang pernah mereka lihat, Anda dapat menggunakan tampilan, memberi mereka akses hanya ke tampilan bukan tabel yang mendasari dan kemudian meminta tampilan

Laporan kristal tampaknya lebih suka menggunakan tampilan untuk procs yang disimpan, sehingga orang yang melakukan banyak penulisan laporan cenderung menggunakan banyak tampilan

Tampilan juga sangat berguna saat refactoring database. Anda dapat sering menyembunyikan perubahan sehingga kode lama tidak melihatnya dengan membuat tampilan. Baca di database refactoring untuk melihat bagaimana ini bekerja karena ini adalah cara yang sangat ampuh untuk melakukan refactor.

HLGEM
sumber
7

Satu keuntungan utama dari tampilan atas prosedur tersimpan adalah Anda bisa menggunakan tampilan sama seperti Anda menggunakan tabel. Yaitu, tampilan dapat dirujuk langsung pada FROMklausa kueri. Misalnya SELECT * FROM dbo.name_of_view,.

Dalam hampir semua hal lain, prosedur tersimpan lebih kuat. Anda dapat lulus dalam parameter, termasuk outparameter yang memungkinkan Anda secara efektif untuk kembali beberapa nilai sekaligus, Anda dapat melakukan SELECT, INSERT,UPDATE , dan DELETEoperasi, dll dll

Jika Anda ingin kemampuan Tampilan untuk meminta dari dalam FROM klausa, tetapi Anda juga ingin dapat mengirimkan parameter, ada cara untuk melakukannya juga. Ini disebut fungsi bernilai tabel.

Inilah artikel yang cukup bermanfaat tentang topik ini:

http://databases.aspfaq.com/database/should-i-use-a-view-a-stored-procedure-or-a-user-defined-function.html

EDIT: Ngomong-ngomong, pertanyaan semacam ini menimbulkan pertanyaan, apa keuntungan yang dimiliki pandangan atas fungsi bernilai tabel? Saya tidak memiliki jawaban yang benar-benar bagus untuk itu, tetapi saya akan mencatat bahwa sintaks T-SQL untuk membuat tampilan lebih sederhana daripada untuk fungsi bernilai tabel, dan pengguna database Anda mungkin lebih akrab dengan pandangan.

penjahat
sumber
+1 sebagai salah satu dari sedikit jawaban untuk mengatasi masalah prosedur tersimpan terhadap pernyataan SELECT. Anda benar untuk mengangkat masalah fungsi tabel. Pada dasarnya, tampilan cenderung berkinerja lebih baik daripada fungsi karena mereka berbagi mesin yang sama. Ada overhead (setidaknya dalam Oracle) yang harus dibayar ketika beralih dari SQL ke SQL trabaksi (yaitu PL / SQL). Tetapi semua hal lainnya - keamanan, enkapsulasi, dll - berlaku sama untuk prosedur atau fungsi untuk pandangan.
APC
Bergantung pada struktur tampilan, beberapa tampilan dapat diindeks. Itu adalah peningkatan besar atas fungsi bernilai tabel.
HLGEM
6

Ini bisa berfungsi sebagai "perantara" antara ORM dan tabel Anda.

Contoh:

Kami memiliki tabel Person yang kami butuhkan untuk mengubah struktur di atasnya sehingga kolom SomeColumn akan dipindahkan ke tabel lain dan akan memiliki hubungan satu ke banyak.

Namun, sebagian besar sistem, berkenaan dengan Orang, masih menggunakan SomeColumn sebagai satu hal, tidak banyak hal. Kami menggunakan tampilan untuk menyatukan semua SomeColumns dan menempatkannya dalam tampilan, yang bekerja dengan baik.

Ini berfungsi karena lapisan data telah berubah, tetapi persyaratan bisnis tidak berubah secara mendasar, sehingga objek bisnis tidak perlu berubah. Jika objek bisnis harus berubah, saya tidak berpikir ini akan menjadi solusi yang layak, tetapi pandangan pasti berfungsi sebagai titik tengah yang baik.

Yusuf
sumber
1
menarik. Dalam kasus Anda, ini hampir seperti antarmuka ke tabel.
MedicineMan
5

Untuk Fokus pada Data Tertentu Tampilan memungkinkan pengguna untuk fokus pada data spesifik yang menarik minat mereka dan pada tugas-tugas spesifik yang menjadi tanggung jawab mereka. Data yang tidak perlu dapat diabaikan. Ini juga meningkatkan keamanan data karena pengguna hanya dapat melihat data yang ditentukan dalam tampilan dan bukan data dalam tabel yang mendasarinya. Untuk informasi lebih lanjut tentang menggunakan tampilan untuk tujuan keamanan, lihat Menggunakan Tampilan sebagai Mekanisme Keamanan.

Untuk Menyederhanakan Manipulasi Data Tampilan dapat menyederhanakan cara pengguna memanipulasi data. Anda dapat mendefinisikan gabungan yang sering digunakan, proyeksi, kueri UNION, dan kueri SELECT sebagai tampilan sehingga pengguna tidak harus menentukan semua kondisi dan kualifikasi setiap kali operasi tambahan dilakukan pada data tersebut. Misalnya, kueri kompleks yang digunakan untuk tujuan pelaporan dan melakukan subkueri, gabungan luar, dan agregasi untuk mengambil data dari sekelompok tabel dapat dibuat sebagai tampilan. Tampilan menyederhanakan akses ke data karena kueri yang mendasarinya tidak harus ditulis atau diserahkan setiap kali laporan dihasilkan; pandangan itu dipertanyakan sebagai gantinya. Untuk informasi lebih lanjut tentang memanipulasi data.

Anda juga dapat membuat fungsi inline yang ditentukan pengguna yang beroperasi secara logis sebagai tampilan parameter, atau tampilan yang memiliki parameter dalam kondisi pencarian klausa WHERE. Untuk informasi lebih lanjut, lihat Fungsi Inline yang Ditentukan Pengguna.

Untuk Menyesuaikan Tampilan Data memungkinkan pengguna yang berbeda untuk melihat data dengan cara yang berbeda, bahkan ketika mereka menggunakan data yang sama secara bersamaan. Ini sangat menguntungkan ketika pengguna dengan berbagai minat dan tingkat keterampilan yang berbeda berbagi database yang sama. Misalnya, tampilan dapat dibuat yang hanya mengambil data untuk pelanggan yang berurusan dengan manajer akun. Tampilan dapat menentukan data mana yang akan diambil berdasarkan ID login manajer akun yang menggunakan tampilan.

Untuk Mengekspor dan Mengimpor Tampilan Data dapat digunakan untuk mengekspor data ke aplikasi lain. Misalnya, Anda mungkin ingin menggunakan toko dan tabel penjualan di database pub untuk menganalisis data penjualan menggunakan Microsoft® Excel. Untuk melakukan ini, Anda dapat membuat tampilan berdasarkan toko dan tabel penjualan. Anda kemudian dapat menggunakan utilitas bcp untuk mengekspor data yang ditentukan oleh tampilan. Data juga dapat diimpor ke tampilan tertentu dari file data menggunakan utilitas bcp atau pernyataan BULK INSERT asalkan baris dapat dimasukkan ke dalam tampilan menggunakan pernyataan INSERT. Untuk informasi lebih lanjut tentang batasan untuk menyalin data ke tampilan, lihat MASUKKAN. Untuk informasi lebih lanjut tentang menggunakan utilitas bcp dan pernyataan BULK INSERT untuk menyalin data ke dan dari tampilan, lihat Menyalin Ke atau Dari Tampilan.

Untuk Menggabungkan Data yang Dipartisi Operator himpunan UNI Transact-SQL dapat digunakan dalam tampilan untuk menggabungkan hasil dari dua atau lebih kueri dari tabel terpisah menjadi satu set hasil tunggal. Ini muncul kepada pengguna sebagai satu tabel yang disebut tampilan dipartisi. Misalnya, jika satu tabel berisi data penjualan untuk Washington, dan tabel lain berisi data penjualan untuk California, tampilan dapat dibuat dari UNION tabel tersebut. Tampilan mewakili data penjualan untuk kedua wilayah. Untuk menggunakan tampilan yang dipartisi, Anda membuat beberapa tabel identik, menentukan batasan untuk menentukan rentang data yang dapat ditambahkan ke setiap tabel. Tampilan kemudian dibuat menggunakan tabel dasar ini. Ketika tampilan ditanya, SQL Server secara otomatis menentukan tabel mana yang dipengaruhi oleh kueri dan hanya referensi tabel tersebut. Sebagai contoh, jika kueri menentukan bahwa hanya data penjualan untuk negara bagian Washington diperlukan, SQL Server hanya membaca tabel yang berisi data penjualan Washington; tidak ada tabel lain yang diakses.

Tampilan yang dipartisi dapat didasarkan pada data dari berbagai sumber heterogen, seperti server jarak jauh, bukan hanya tabel dalam database yang sama. Misalnya, untuk menggabungkan data dari server jarak jauh yang berbeda yang masing-masing menyimpan data untuk wilayah berbeda di organisasi Anda, Anda bisa membuat kueri terdistribusi yang mengambil data dari setiap sumber data, dan kemudian membuat tampilan berdasarkan kueri terdistribusi tersebut. Setiap kueri hanya membaca data dari tabel di server jauh yang berisi data yang diminta oleh kueri; server lain yang dirujuk oleh kueri yang didistribusikan dalam tampilan tidak diakses.

Saat Anda mempartisi data di beberapa tabel atau beberapa server, kueri yang mengakses hanya sebagian kecil dari data dapat berjalan lebih cepat karena ada lebih sedikit data untuk dipindai. Jika tabel terletak di server yang berbeda, atau di komputer dengan beberapa prosesor, setiap tabel yang terlibat dalam kueri juga dapat dipindai secara paralel, sehingga meningkatkan kinerja kueri. Selain itu, tugas pemeliharaan, seperti membangun kembali indeks atau membuat cadangan tabel, dapat melakukan lebih cepat. Dengan menggunakan tampilan yang dipartisi, data masih muncul sebagai tabel tunggal dan dapat ditanyakan seperti itu tanpa harus merujuk tabel dasar yang benar secara manual.

Tampilan yang dipartisi dapat diperbarui jika salah satu dari kondisi ini terpenuhi: BUKAN pemicu didefinisikan pada tampilan dengan logika untuk mendukung pernyataan INSERT, UPDATE, dan DELETE.

Pernyataan tampilan dan INSERT, UPDATE, dan DELETE mengikuti aturan yang ditetapkan untuk tampilan dipartisi yang dapat diupdate. Untuk informasi lebih lanjut, lihat Membuat Tampilan yang Dipartisi.

https://technet.microsoft.com/en-us/library/aa214282(v=sql.80).aspx#sql:join

Shaharban TA
sumber
5

Berikut adalah dua alasan umum:

Anda dapat menggunakannya untuk keamanan. Tidak memberikan izin pada tabel utama dan membuat tampilan yang membatasi akses kolom atau baris dan memberikan izin kepada pengguna untuk melihat tampilan.

Anda dapat menggunakannya untuk kenyamanan. Bergabunglah bersama beberapa tabel yang Anda gunakan bersama sepanjang waktu dalam tampilan. Ini dapat membuat kueri konsisten dan lebih mudah.

KM.
sumber
3

Ada lebih dari satu alasan untuk melakukan ini. Terkadang membuat kueri gabungan yang umum menjadi mudah karena seseorang hanya dapat menanyakan nama tabel daripada melakukan semua gabungan.

Alasan lain adalah membatasi data untuk pengguna yang berbeda. Jadi misalnya:

Table1: Kolum - USER_ID; USERNAME; SSN

Pengguna admin dapat memiliki priv di tabel sebenarnya, tetapi pengguna yang Anda tidak ingin memiliki akses untuk mengatakan SSN, Anda membuat tampilan sebagai

BUAT LIHAT USERNAM SEBAGAI PILIH user_id, nama pengguna DARI Table1;

Kemudian beri mereka privasi untuk mengakses tampilan dan bukan tabel.

RC.
sumber
2

Tampilan dapat menjadi anugerah saat ketika melakukan pelaporan pada database lama. Secara khusus, Anda dapat menggunakan nama tabel sensikal alih-alih 5 nama samar (di mana 2 di antaranya adalah awalan umum!), Atau nama kolom yang penuh dengan singkatan yang saya yakin masuk akal pada saat itu.

Jeff Hardy
sumber
2

Secara umum saya pergi dengan pandangan untuk membuat hidup lebih mudah, mendapatkan detail yang diperluas dari beberapa entitas yang disimpan lebih dari beberapa tabel (menghilangkan banyak gabungan dalam kode untuk meningkatkan keterbacaan) dan kadang-kadang untuk berbagi data melalui beberapa basis data atau bahkan untuk membuat sisipan lebih mudah dibaca.

Keris
sumber
2

Berikut adalah cara menggunakan Tampilan bersama dengan izin untuk membatasi kolom yang dapat diperbarui pengguna dalam tabel.

/* This creates the view, limiting user to only 2 columns from MyTestTable */
CREATE VIEW dbo.myTESTview 
WITH SCHEMABINDING AS
SELECT ID, Quantity FROM dbo.MyTestTable;

/* This uses the view to execute an update on the table MyTestTable */
UPDATE dbo.myTESTview
SET Quantity = 7
WHERE ID = 1
SQL Dave Florida
sumber
1

Ketika saya ingin melihat snapshot dari tabel, dan / atau tampilan (dengan cara read-only)

Vehomzzz
sumber
1
apa yang kamu maksud dengan 'snapshot of a table'? Kapan atau mengapa Anda ingin melakukan itu?
MedicineMan
Ada banyak skenario; katakanlah Anda ingin menjalankan kueri / toko-precedure kompleks pada tabel tanpa mempengaruhi dan menggarisbawahi tabel Anda membuat tampilan (representasi read-only)
vehomzzz
jadi jika Anda ingin menjalankan prosedur toko kueri yang rumit, tidak bisakah Anda mengakses tampilan dengan mode hanya baca? Saya benar-benar tidak memiliki pengalaman basis data untuk 'mendapatkan' apa yang Anda bicarakan di sini. Bisakah Anda menguraikan atau memberikan contoh rinci?
MedicineMan
1

Saya suka menggunakan tampilan atas prosedur tersimpan ketika saya hanya menjalankan kueri. Tampilan juga dapat menyederhanakan keamanan, dapat digunakan untuk memudahkan sisipan / pembaruan ke beberapa tabel, dan dapat digunakan untuk memotret / mematerialisasikan data (menjalankan kueri yang sudah berjalan lama, dan menyimpan hasil dalam cache).

Saya telah menggunakan tampilan terwujud untuk menjalankan kueri rindu yang tidak diharuskan untuk tetap akurat secara real time.

MattH
sumber
saat Anda menjalankan kueri yang bertentangan dengan? Mengapa? Poin ini tidak masuk akal
MedicineMan
ketika Anda menggunakan tampilan, Anda tahu Anda hanya melakukan operasi DML, ketika Anda memanggil SP Anda tidak melakukan apa lagi yang mungkin terjadi sebelum Anda mendapatkan data Anda. Yaitu memanggil fungsi cache, dapat mengembalikan dataset cache, tetapi itu tidak berarti Anda harus memanggil SP semua data yang Anda inginkan. Ini menyederhanakan API ke data IMO
MattH
1

Tampilan juga memecah konfigurasi yang sangat kompleks dan tabel menjadi potongan dikelola yang mudah ditanyakan. Dalam database kami, seluruh sistem manajemen tabel kami dipecah menjadi tampilan dari satu tabel besar.

Jim
sumber
1

Ini tidak menjawab pertanyaan Anda dengan tepat, tetapi saya pikir akan layak untuk menyebutkan Pandangan Terwujud . Pengalaman saya sebagian besar dengan Oracle tetapi seharusnya SQL-Server cukup mirip.

Kami menggunakan sesuatu yang serupa dalam arsitektur kami untuk mengatasi masalah kinerja XML. Sistem kami dirancang dengan banyak data yang disimpan sebagai XML pada satu baris dan aplikasi mungkin perlu meminta nilai tertentu di dalamnya. Menangani banyak XMLTip dan menjalankan XPath di sejumlah besar baris memiliki dampak besar pada kinerja sehingga kami menggunakan bentuk pandangan terwujud untuk mengekstrak simpul XML yang diinginkan ke tabel relasional kapan saja tabel dasar berubah. Ini secara efektif memberikan snapshot fisik kueri pada suatu titik waktu yang bertentangan dengan tampilan standar yang akan menjalankan kueri mereka berdasarkan permintaan.

Chris Cameron-Mills
sumber
1

Saya melihat prosedur tersimpan lebih sebagai metode yang dapat saya panggil terhadap data saya, sedangkan bagi saya tampilan menyediakan mekanisme untuk membuat versi sintetis dari data dasar terhadap kueri atau prosedur tersimpan yang dapat dibuat. Saya akan membuat tampilan saat penyederhanaan atau agregasi masuk akal. Saya akan menulis prosedur tersimpan ketika saya ingin memberikan layanan yang sangat spesifik.

Jacor
sumber
dapatkah Anda memberikan contoh layanan kecil
MedicineMan
1

Satu hal yang aneh tentang pandangan adalah bahwa mereka dilihat oleh Microsoft Access sebagai tabel: ketika Anda melampirkan front-end Microsoft Access ke database SQL menggunakan ODBC, Anda melihat tabel dan tampilan dalam daftar tabel yang tersedia. Jadi jika Anda menyiapkan laporan yang rumit di MS Access, Anda bisa membiarkan server SQL melakukan penggabungan dan pencarian, dan sangat menyederhanakan hidup Anda. Ditto untuk menyiapkan kueri di MS Excel.


sumber
1

Saya hanya memiliki 10 atau lebih tampilan dalam basis data produksi saya. Saya menggunakan beberapa untuk kolom yang saya gunakan sepanjang waktu. Satu set yang saya gunakan berasal dari 7 tabel, beberapa dengan gabungan luar dan alih-alih menulis ulang bahwa saya hanya perlu memanggil tampilan itu dalam pemilihan dan membuat satu atau 2 bergabung. Bagi saya itu hanya penghemat waktu.

Brian Spencer
sumber
maafkan saya jika ini di luar ruang lingkup pertanyaan, tetapi beberapa orang telah menyebutkan ini - tidakkah Anda dikenakan semacam hukuman kinerja karena melakukan ini?
MedicineMan
Tidak semuanya. SQL Server optimizer menunjukkan rencana yang sama persis untuk memilih * dari tampilan seperti halnya untuk SQL bergabung dengan tampilan
Brian Spencer
1

Saya membuat xxx yang memetakan semua hubungan antara tabel utama (seperti tabel Produk) dan tabel referensi (seperti ProductType atau ProductDescriptionByLanguage). Ini akan membuat tampilan yang memungkinkan saya mengambil produk dan semua detailnya diterjemahkan dari kunci asingnya ke deskripsi. Lalu saya bisa menggunakan ORM untuk membuat objek agar mudah membangun kisi, kotak kombo, dll.

GRGodoi
sumber
0

Anggap saja sebagai refactoring skema database Anda.

quillbreaker
sumber
0

Saya pikir yang pertama. Untuk menyembunyikan kompleksitas Query. Ini sangat tepat untuk dilihat. Bagaimana ketika kita menormalkan tabel Database meningkat. Sekarang untuk mengambil data sangat sulit ketika jumlah tabel meningkat. Jadi cara terbaik untuk menangani adalah mengikuti tampilan. Jika saya salah, perbaiki saya.

AshutoshG
sumber
Jika Anda google itu Anda akan mendapatkan informasi yang sangat jelas untuk pertanyaan ini.
Chella
0

Kami membuat tampilan untuk membatasi atau membatasi mengakses semua baris / kolom dalam tabel. Jika pemilik ingin hanya baris / kolom tertentu atau terbatas yang perlu dibagikan, maka ia akan membuat tampilan dengan kolom tersebut.

Gyan Prakash
sumber
Ini hanya satu alasan mengapa Anda harus / bisa menggunakan tampilan.
Alexander
0

Untuk keamanan: Memberikan setiap izin pengguna untuk mengakses database hanya melalui sekumpulan kecil tampilan yang berisi data spesifik yang diizinkan untuk dilihat oleh pengguna atau grup pengguna, sehingga membatasi akses pengguna ke data lain.

Kesederhanaan untuk kueri dan struktur : Tampilan dapat menggambar data dari beberapa tabel dan menyajikan tabel tunggal, menyederhanakan informasi dan mengubah kueri multi-tabel menjadi kueri tabel tunggal untuk tampilan dan memberikan pengguna tampilan spesifik dari struktur database, menyajikan database sebagai satu set tabel virtual khusus untuk pengguna atau kelompok pengguna tertentu.

Untuk membuat struktur database yang konsisten : Tampilan menyajikan gambar yang konsisten dan tidak berubah dari struktur database, bahkan jika tabel sumber yang mendasarinya diubah.

Shivam Mishra
sumber