Anda di halaman 1dari 14

PRAKTIKUM BASIS DATA LANJUT 1

MODUL II

V I E W

TUJUAN

Setelah menyelesaikan modul ini, anda diharapkan dapat :


1. Mengenalkan mahasiswa tentang konsep view
2. Mengenalkan mahasiswa tentang penggunaan view

DASAR TEORI

View
View merupakan query yang tersimpan yang menghasilkan result set ketika dipanggil. View
bertindak sebagai table virtual. Beberapa hal yang tidak boleh digunakan pada query yang
mendifinisikan view adalah sebagai berikut :
- Definisi view tidak boleh memiliki sub query di klausa FROM dari statemen SQL
- Vsariabel user, sistem, atu local tidak boleh digunakan dalam sebuah SQL SELECT
- View tidak dapat merujuk ke table temporer
- Trigger tidak dapat disosialisasikan terhadap sebuah view
- View yang dibuat dalam stored procedure tidak dapat merujuk kepada
parameter dalam stored procedure
Pembuatan view memerlukan pendefinisian nama view dan sebuah statement SQL. Setelah
view dibuat, view dapat diquery seperti table biasa. Bentuk dasar pembuatan view adalah
sebagai berikut :
CREATE [OR REPLACE] [<algorithm attributes>] VIEW [database.]
<name> [(<columns>)]
AS <SELECT statement> [WITH <LOCAL | CASCADE> <check option>]

Pembuatan view dapat menggunakan OR REPLACE untuk menggantikan view yang telah ada
sebelumnya.
Algorithm Attributes
Algorithm attributes memberikan kendali bagaimana MySql memproses view. Atribut ini
bersifat opsional. Atribut algoritma menerima tiga buah nilai yaitu MERGE, TEMPTABLE, dan
UNDEFINED. Default algoritma yang dipilih adalah UNDEFINED.
PRAKTIKUM BASIS DATA LANJUT 2

Untuk algoritma MERGE, teks dipilih dari statement query yang merujuk ke sebuah view dan
definisi view digabungkan sedemikian sehingga bagian dari definisi view menggantikan
bagian yang bersesuaian dengan statement.
Untuk algoritma TEMPTABLE, hasil dari view diambil ke dalam temporary table, yang
kemudian digunakan untuk menjalankan statement. TEMPTABLE dipilih karena lock pada
table yang digunakan dapat langsung dilepas setelah temporary table dibuat. Akibatnya,
penggunaan TEMPTABLE dapat mempercepat pelepasan lock pada table utama, sehingga
klien lain yang akan menggunakan view tidak menunggu terlalu lama.
Untuk algoritma UNDEINED, MySql memilih sendiri algoritma mana yang akan digunakan.
MySql lebih memilih MERGE karena biasanya lebih efisien. Selain itu, view yang
menggunakan TEMPTABLE tidak dapat diuodate karena menggunakan temporary table.
Algoritma MERGE tidak dapat digunakan ketika view memerlukan penggunaan konstrksi
sebagai berikut :
- Fungsi aggregate seperti SUM (), MIN (), MAX (), COUNT () dan lain-lain,
- DISTINCT
- GROUP BY
- HAVING
- LIMIT
- UNION atau UNION ALL
- Subquery pada SELECT
- Referensi ke nilai literal (tidak ada table yang direferensi).
Ketika algoritma MERGE tidak dapat digunakan, maka kita dapat menggunakan TEMPTABLE.
Update View
Terdapat beberapa view yang dapat diupdate menggunakan statemet UPDATE, DELETE,
atau INSERT. Update juga dilakukan pada table yang dirujuk view tersebut, supaya sebuah
view dapat diupdate. Harus ada hubungan satu-satu antara baris dalam view dengan baris
pada tabelnya. Selain view yang dapat diupdate, ada juga view yang tidak dapat diupdate,
yaitu view yang tidak memiliki :
1. Fungsi aggregate seperti SUM (), MIN (), MAX (), COUNT (),
2. GROUP BY,
3. HAVING, UNION atau UNION ALL
4. Sub query di SELECT,
PRAKTIKUM BASIS DATA LANJUT 3

5. Join-join tertentu,
6. Nonupdatable view pada klausa FROM
7. Sebuah subquery di klausa WHERE yang merujuk ke sebuah table dalam klausa
FROM,
8. Hanya merujuk ke nilai literal (tidak merujuk ke sebuah table)
9. Menggunakan ALGORITHM = TEMPTABLE (penggunaan temporary table membuat
view tidak dapat diupdate),
10. Referensi berulangkali ke kolom manapun dari sebuah table.
View dapat diupdate dengan INSERT jika memenuhi syarat sebagai berikut :
- Tidak boleh ada duplikasi nama kolom,
- View harus terdiri atas semua kolom pada table dasar yang tidak memiliki nilai default,
- Kolom view harus merupakan referensi kolom dan bukan kolom turunan.
Klausa WITH CHECK OPTION
Klausa WITH CHECK OPTION dalam pembuatan view diberikan kepada update table view
untuk mencegah INSERT atau UPDATE pada baris data kecuali klausa WHERE pada
statement SELECT bernilai benar (true). Parameter yang dapat digunakan untuk CHECK
OPTION adalah LOCAL dan CASCADED. Parameter LOCAL berarti pengecekan hanya
dilakukan pada view yang didefinisikan. Parameter CASCADED berarti pengecekan
dilakukan pada view beserta table yang direferensi oleh view tersebut. secara default,
pendefinisian CHECK OPTION bernilai CASCADED.
Merubah View
View yang telah dibuat dapat diubah dengan menggunakan perintah LATER VIEW.
Melihat definisi pembuatan View
Kita dapat melihat kembali sintaks yang kita gunakan untuk view dengan meggunakan
perintah SHOW CREATE.
PRAKTIKUM
Berikut ini adalah contoh view sederhana :
1. Membuat view dengan nama view1 dari table employee, yang berisi gabungan
(first_name dan last_name) dan city.
PRAKTIKUM BASIS DATA LANJUT 4

2. Menampilkan isi view1.

3. Dari langkah 2, kita juga dapat mendefinisikan gabungan first_name dan last_name
menjadi kolom name.

4. Pembuatan view menggunakan atribut algoritma MERGE dengan nama v_merge,


yang berisi field name (merupakan gabungan first_name dan last_name) dan salary.

5. Menampilkan isi dari table v_merge.


PRAKTIKUM BASIS DATA LANJUT 5

Pada query di atas, kita membuat view dengan menggunakan algoritma MERGE. Ketika
query SELECT pada view dilakukan, MySql akan menangani statement tersebut sebagai
berkut :

- v_merge menjadi employee


- * menjadi name dan salary yang berkaitan dengan CONCAT (first_name, “
”,last_name)
- Klausa WHERE kemudian ditambahkan, sehingga statement tersebut akan
dieksekusi menjadi :

Perintah kedua yaitu

Statement di atas dijalankan seperti statement sebelumhya, namun klausa WHERE pada
query ditambahkan pada view menggunakan konektor AND dan parentesis (kurung buka dan
PRAKTIKUM BASIS DATA LANJUT 6

tutup) untuk memastikan pengerjaan klausa. Statement query di atas akan dieksekusi
sebagai :

6. Contoh algoritma MERGE yang tidak bisa digunakan, karena terdapat GROUP BY
pada statement SELECT serta fungsi aggregate COUNT (), MySql akan memberikan
pesan warning dan merubah algorim=tma secara otomatis menjadu UNDEFINED.

7. Query pada langkah ke 6 dapat dijalankan dengan mengganti algoritma MERGE


dengan algoritma TEMPTABLE.

Saat kita menggunakan algoritma TEMPTABLE untuk menggantikan algoritma MERGE, maka
tidak muncul pesan warning.
8. Update view2 yang memiliki city ‘Toronto’ diupdate menjadi ‘Canberra’. Update data
pada view2 juga terjadi pada table yang direferensi, yaitu table employee. Data
sebelum diupdate sebagai berikut :
PRAKTIKUM BASIS DATA LANJUT 7

Query untuk melakukan update sebagai berikut :

Data setelah diupdate sebagai berikut :

Update data juga terjadi pada tabel yang direferensi, yaitu table employee.

9. Penggunaan insert untuk mengupdate view.


PRAKTIKUM BASIS DATA LANJUT 8

Insert untuk view tidak dapat dilakukan karena memiliki kolom turunan yaitu name turunan
dari CONCAT (first_name, “ ”, last_name). meskipun demikian, view2 ini tetap dapat
diupdate, namun hanya pada kolom yang bukan kolom turunan.

10. Penggunaan CHECK OPTION :

Pada contoh di atsa kita membuat view v1 yang berisi data dari employee yang memiliki
salary < 3000. Kemudian kita mendefinisikan view v2 dengan tambahan batasan salary > 0
dan LOCAL CHECK OPTION. Selain itu, kita juga mendefinisikan v3 dengan tambahan batasan
salary > 0 namun dengan CASCADED CHECK OPTION.
PRAKTIKUM BASIS DATA LANJUT 9

Selanjutnya kita masukkan data ke dalam v2 dan v3. Pada v2, data bernilai salary 3500 dapat
dimasukkan, karena pengecekan dilakukan secara LOCAL, yaitu hanya sebatas pada view v2
yang didefinisikan > 0. Sebaliknya, pada v3 , data bernilai salary 3500 tidak dapat
dimasukkan karena pengecekan dilakukan secara CASCADED, yaitu melibatkan pada v1 yang
direferensi oleh v3. Karena v1 memiliki batasan salary < 3000, maka masukkan data salary
3500 akan bernilai salah.
11. Merubah view dengan ALTER VIEW

12. Melihat sisntaks untuk pembuatan view.


PRAKTIKUM BASIS DATA LANJUT 10

13. Melihat descripsi dari view yang telah kita buat , menggunakan perintah sebagai
berikut :

14. Menghapus view yang telah kita buat dapat dilakukan dengan menggunakan
perintah sebagai berikut :

LATIHAN
1. Buatlah database dengan nama perpustakaan berdasarkan ERD (enrity Relationship
Diagram) di bawah ini, dengan field dan data sebagai berikut :
PRAKTIKUM BASIS DATA LANJUT 11

Tabel Anggota

Tabel buku

Tabel Penulis
PRAKTIKUM BASIS DATA LANJUT 12

Tabel Peminjaman
PRAKTIKUM BASIS DATA LANJUT 13
PRAKTIKUM BASIS DATA LANJUT 14

2. Buatlah view dengan nama v_buku yang berisi data kode buku, judul buku, penerbit,
penulis, alamat email.
3. Buatlah view dengan nama v_pinjam yang berisi data nama peminjam, tanggal
peminjam, judul buku yang dipinjam.
4. Buatlah view dengan nama v_detail yang berisi data nama penulis dan jumlah buku
untuk masing-masing penulis.
5. Dengan menggunakan view, tampilkan tanggal peminjaman dan jumlah pendapatan
dari peminjaman (jika terdapat tanggal yang sama, maka jumah pendapatan
ditambahkan/digabungkan).
6. Tampilkan jumlah buku, untuk masing-masing tahun terbit (2013,2014,2015) jika
terdapat dua tahun terbit yang sama, maka jumlah buku ditambahkan, gunakan
view.
7. Gunakan view untuk menampilkan data peminjaman dengan nama field id_pinjam,
tgl_pinjam, peminjam, alamat (gabungan alamat_anggota dan kota_anggota), telp.
8. Tampilkan kota_anggota dan jumlah anggota untuk tiap kota, gunakan view.

Anda mungkin juga menyukai