BASIS DATA
Arif Fadllullah
Rudy
MODUL 5
Relasi dan Join
LABORATORIUM SISTEM INFORMASI DAN KOMPUTASI CERDAS
JURUSAN TEKNIK KOMPUTER, UNIVERSITAS BORNEO TARAKAN
MODUL 9
Jalan Amal Lama No. 1, Tarakan, Kalimantan Utara
TAHUN 2022
Trigger dan View
A. TUJUAN
MODUL PRAKTIKUM BASIS DATA
B. PETUNJUK
- Awali setiap praktikum dengan berdoa agar mendapatkan keberkahan dan kemudahan
dalam mengerjakan praktikum.
- Baca modul dengan seksama dan pahami tujuan dan dasar teori dengan baik.
- Kerjakan latihan-latihan dan tugas-tugas praktikum dengan baik, benar, sabar, teliti, dan
jujur.
- Tanyakan kepada asisten praktikum/dosen pengampu apabila ada hal dalam modul yang
kurang jelas.
C. DASAR TEORI
1. Trigger
Trigger dapat didefinisikan sebagai himpunan kode (prosedural) yang dieksekusi secara
otomatis sebagai respon atas suatu kejadian berkaitan dengan tabel basis data. Kejadian (event)
yang dapat membangkitkan trigger umumnya berupa pernyataan INSERT, UPDATE, dan
DELETE. Berdasarkan ruang lingkupnya, trigger diklasifikasikan menjadi dua jenis: row
trigger dan statement trigger.
Row Trigger (baris) mendefinisikan aksi untuk setiap baris tabel. Statement Trigger
hanya berlaku untuk setiap pernyataan INSERT, UPDATE, dan DELETE. Dari sisi perilaku
(behavior) eksekusi, trigger dapat dibedakan menjadi beberapa jenis; namun umumnya ada dua
jenis: trigger BEFORE dan AFTER. Sesuai penamaannya, jenis-jenis ini merepresentasikan
waktu eksekusi trigger-misalnya sebelum ataukah sesudah pernyataan-pernyataan yang
berkorespondensi.
Adakalanya trigger dipandang sebagai bentuk spesifik dari stored procedure
(terkait pendefinisian body). Bagaimanapun, trigger akan dipanggil (secara otomatis) ketika
event terjadi, sedangkan stored procedure harus dipanggil secara eksplisit. Adapun sintaks
pendefinisian trigger diperlihatkan sebagai berikut :
CREATE
[DEFINER = { user | CURRENT_USER }]
TRIGGER nama_trigger waktu_triger event_trigger
ON nama_tabel FOR EACH ROW statement_trigger
Kemudian sintaks yang digunakan untuk melihat daftar trigger yang terdefinisi adalah:
MySQL tidak mengizinkan multiple trigger dengan waktu aksi dan event sama per tabel.
Misalkan di tabel A sudah didefinisikan trigger AFTER INSERT, maka kita tidak boleh
mendefinisikan trigger AFTER INSERT lagi; namun AFTER EDIT, AFTER DELETE, atau
BEFORE (INSERT, EDIT, dan DELETE) masih bisa diterima.
2. View
View dapat didefinisikan sebagai tabel maya (virtual) atau logical yang terdiri dari
himpunan hasil query. Artinya view sebagai tabel virtual yang dapat digunakan untuk
menampilkan dan menampung hasil query kompleks, sehingga jika hasil query kompleks ingin
dimunculkan kembali datanya, kita tidak perlu menuliskan ulang query-nya dari awal. Tidak
seperti umumnya tabel di dalam basis data relasional, view bukanlah bagian dari skema fisik.
View bersifat dinamis, karena mengandung data dari beberapa relasi tabel yang
direpresentasikannya. Dengan demikian, ketika tabel yang menjadi sumber datanya berubah, data
di view juga akan ikut berubah. Adapun sintaks pendefinisian view diperlihatkan sebagai
berikut:
CREATE
[OR REPLACE]
[ALGORITHM = {UNDEFINER | MERGE | TEMPTABLE}]
[DEFINER = { user | CURRENT_USER }]
[SQL SECURITY { DEFINER | INVOKER }]
VIEW nama_view [(column_list)]
AS select statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
View dapat diatur hanya bersifat read-only ataupun updatable, tergantung adanya
pendefinisian view itu sendiri. Untuk membuat view yang updatable, maka terdapat aturan yang
wajib dipenuhi, diantaranya:
Pernyataan SELECT tidak boleh merujuk ke lebih dari satu tabel.
Pernyataan SELECT tidak boleh menggunakan klausa GROUP BY atau HAVING.
Pernyataan SELECT harus tidak menggunakan DISTINCT.
Pernyataan SELECT harus tidak merujuk ke view lain yang tidak updatable.
Pernyataan SELECT tidak boleh mengandung ekspresi apa pun, misalnya fungsi agregat.
Pada hakekatnya, jika sistem database mampu menentukan pemetaan balik dari skema
view ke skema tabel dasar, maka view memungkinkan untuk di update. Dalam kondisi ini,
operasi-operasi INSERT, UPDATE dan DELETE dapat diterapkan pada view.
D. LATIHAN PRAKTIKUM
Dalam latihan ini, terlebih dahulu kita membuat basis data bernama modul9_NPM yang berisi tabel
BARANG dan tabel PEMBELIAN. Adapun tabel dan isiannya sebagai berikut:
Tabel BARANG
kd_brg nama_brg stok
STB10 Tepung Sajiku 1 kg 100
STB11 Minyak Sunco 5 liter 30
STB12 Sarden ABC ukuran sedang 40
Tabel PEMBELIAN
no_pem kd_brg jml_beli
1 STB11 5
1. Membuat Trigger
Sederhana
Tulislah menggunakan editor MySQL Workbench, SQL untuk membuat trigger
inkremenStok.
DELIMITER //
CREATE TRIGGER inkremenStok
BEFORE INSERT ON BARANG
Eksekusi pernyataan diatas. Setelah itu tuliskan pernyataan dan eksekusi pernyataan di bawah
ini:
dan ini:
SHOW TRIGGER\G
Periksa hasilnya. Jelaskan apa yang terjadi kaitannya dengan trigger yang didefinisikan,
screenshot pembuatan dan pengolahan/program tampilkan di bawah ini:
DELIMITER //
UPDATE barang
SET stok = stok - NEW.jml_beli
WHERE kd_brg = NEW.kd_brg;
END//
Eksekusi pernyataan diatas. Setelah itu tuliskan pernyataan dan eksekusi pernyataan di bawah
ini satu persatu:
a) SELECT * FROM BARANG;
b) INSERT INTO PEMBELIAN VALUES(2, “STB10”, 10);
c) SELECT * FROM BARANG;
Periksa hasilnya dan bandingkan perbedaan hasilnya antara SELECT poin a dengan poin c.
Jelaskan apa yang terjadi kaitannya dengan trigger yang didefinisikan, screenshot pembuatan
dan pengolahan/program tampilkan di bawah ini:
DELIMITER //
UPDATE barang
Eksekusi pernyataan diatas. Setelah itu tuliskan pernyataan dan eksekusi pernyataan di bawah
ini satu persatu:
a) SELECT * FROM BARANG;
b) SELECT * FROM PEMBELIAN;
c) UPDATE PEMBELIAN SET jml_beli = 25 WHERE no_pem = 1;
d) SELECT * FROM BARANG;
e) SELECT * FROM PEMBELIAN;
Periksa hasilnya dan bandingkan perbedaan hasilnya antara SELECT poin a dan b dengan
SELECT poin d dan e. Jelaskan apa yang terjadi kaitannya dengan trigger yang didefinisikan
screenshot pembuatan dan pengolahan/program tampilkan di bawah ini:
DELIMITER //
Eksekusi pernyataan diatas. Setelah itu tuliskan pernyataan dan eksekusi pernyataan di bawah
ini satu persatu:
a) SELECT * FROM BARANG;
b) SELECT * FROM PEMBELIAN;
c) DELETE FROM BARANG WHERE kd_brg = “STB10”;
d) SELECT * FROM BARANG;
e) SELECT * FROM PEMBELIAN;
Periksa hasilnya dan bandingkan perbedaan hasilnya antara SELECT poin a dan b dengan
SELECT poin d dan e. Jelaskan apa yang terjadi kaitannya dengan trigger yang didefinisikan,
screenshot pembuatan dan pengolahan/program tampilkan di bawah ini:
5. Membuat View
Dalam mengerjakan latihan membuat view ini, gunakan tabel beserta datanya dari basis data
modul 7 atau 8. Tulislah menggunakan editor MySQL Workbench, SQL untuk membuat
Eksekusi pernyataan diatas. Setelah itu tuliskan pernyataan dan eksekusi pernyataan di bawah
ini:
SELECT * FROM info_mahasiswa_ambil_matakuliah;
Jelaskan apa yang terjadi kaitannya dengan VIEW yang didefinisikan, screenshot pembuatan
dan pengolahan/program tampilkan di bawah ini:
Buatlah VIEW untuk mendefinisikan siapa saja mahasiswa yang tidak mengambil matakuliah.
Jelaskan caranya, screenshot pembuatan dan pengolahan/program tampilkan di bawah ini:
Dalam mengerjakan latihan membuat view ini, gunakan tabel beserta datanya dari basis data
modul 7 atau 8. Tulislah menggunakan editor MySQL Workbench, SQL untuk membuat dua
VIEW yaitu data_matakuliah dan data_matakuliah_2 untuk melihat data
matakuliah di semester 2:
Eksekusi pernyataan diatas. Jelaskan apa yang terjadi kaitannya dengan VIEW yang
didefinisikan, screenshot pembuatan dan pengolahan/program tampilkan di bawah ini:
Selain nested view, pada view juga dikenal updatable view. Tulislah menggunakan editor
MySQL Workbench, SQL untuk membuat VIEW yaitu tampil_mahasiswa yang
selanjutnya akan dilakukan update/pengubahan data pada view tersebut.
UPDATE tampil_mahasiswa
SET alamat = ‘Jl. Juata Permai’
WHERE npm = 101;
Dalam mengerjakan latihan membuat view ini, gunakan tabel beserta datanya dari basis data
modul 7 atau 8. Tulislah menggunakan editor MySQL Workbench, SQL untuk membuat tiga
VIEW yaitu vMkOption, vMkLokal dan vMkCascade sebagai berikut:
Eksekusi pernyataan diatas. Setelah itu tuliskan pernyataan dan eksekusi pernyataan di bawah
ini satu persatu:
a) INSERT INTO vMkLokal VALUES(“TJ442120”, “Metode Numerik”, 2,
4, 11);
b) INSERT INTO vMkCascade VALUES(“TJ443122”, “Mikrokontroler”,
3, 4, 13);
Periksa hasilnya dan bandingkan perbedaan hasilnya antara INSERT poin a dengan poin b.
Jelaskan apa yang terjadi kaitannya dengan LOCAL dan CASCADE yang didefinisikan pada
masing-masing view, screenshot pembuatan dan pengolahan/program tampilkan di bawah ini:
E. TUGAS PRAKTIKUM
Dengan menggunakan tabel yang telah dibuat pada latihan praktikum modul 7 atau 8, maka:
1. Lengkapi tabel MAHASISWA dengan field npm, nama, dan status serta buat baru sebyag tabel
DAFTARNILAI dengan field npm dan nilai. Selanjutnya, definisikan trigger pada tabel
DAFTARNILAI, sehingga saat melakukan INSERT dan UPDATE pada tabel DAFTARNILAI,
field status pada tabel MAHASISWA akan otomatis terisi “LULUS” atau “TIDAK LULUS”
dengan ketentuan apabila nilai > 75 dinyatakan lulus, sebaliknya dinyatakan tidak lulus.
2. Definisikan view untuk mendapatkan nama dosen yang mengajar matakuliah dengan jumlah
siswa terbanyak.
F. KESIMPULAN
G. DAFTAR PUSTAKA
Jurusan Teknik Elektro UM. (2017). Modul 5 Subquery dan View. Jurusan Teknik Elektro UM.
Astutik, I. R. I., & Rosid, M. A. (2020). BASIS DATA (M. Suryawinata (ed.); Pertama). UMSIDA
PRESS.