Anda di halaman 1dari 17

MODUL PRAKTIKUM

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

 Memahami konsep dasar trigger dan view di dalam basis data.


 Mampu mengimplementasikan trigger sebagai bentuk respon atas suatu kejadian.
 Mampu mengimplementasikan view untuk menyelesaikan kasus-kasus pengambilan 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:

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 2


MODUL PRAKTIKUM BASIS DATA

SHOW TRIGGERS (tambahkan \G untuk menampilkan data secara


vertikal);

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

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 3


MODUL PRAKTIKUM BASIS DATA

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

FOR EACH ROW BEGIN

SET NEW.stok = NEW.stok + 1;


END //

Eksekusi pernyataan diatas. Setelah itu tuliskan pernyataan dan eksekusi pernyataan di bawah
ini:

INSERT INTO BARANG VALUES(“STB13”, “Sirup Marjan Rasa Mangga”,


4);

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:

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 4


MODUL PRAKTIKUM BASIS DATA

2. Membuat Trigger untuk kasus INSERT (dengan Keyword NEW)


Untuk merujuk ke kolom-kolom tabel yang diasosiasikan dengan trigger, kita menggunakan
keyword OLD dan NEW. Keyword OLD mengacu pada nilai lama, sedangkan NEW
merepresentasikan nilai baru. Di trigger INSERT, kita hanya dapat menggunakan keyword
NEW karena tidak ada data lama.
Tulislah menggunakan editor MySQL Workbench, SQL untuk membuat trigger updateStok
untuk mengubah data stok pada Barang sesaat setelah melakukan INSERT data pada tabel
PEMBELIAN.

DELIMITER //

CREATE TRIGGER updateStok


AFTER INSERT ON pembelian

FOR EACH ROW BEGIN

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;

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 5


MODUL PRAKTIKUM BASIS DATA

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:

3. Membuat Trigger untuk kasus UPDATE (dengan Keyword OLD)


Keyword OLD mengacu pada nilai lama, sedangkan NEW merepresentasikan nilai baru. Khusus
untuk operasi UPDATE, kita bisa memanfaarkan keyword NEW maupun OLD.

Tulislah menggunakan editor MySQL Workbench, SQL untuk membuat trigger


updateStokEdit untuk mengubah data stok pada Barang sesaat setelah melakukan
UPDATE data pada tabel PEMBELIAN.

DELIMITER //

CREATE TRIGGER updateStokEdit


AFTER UPDATE ON pembelian

FOR EACH ROW BEGIN

UPDATE barang

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 6


MODUL PRAKTIKUM BASIS DATA

SET stok = stok – (NEW.jml_beli – OLD.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) 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:

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 7


MODUL PRAKTIKUM BASIS DATA

4. Membuat Trigger untuk Kasus DELETE


Tulislah menggunakan editor MySQL Workbench, SQL untuk membuat trigger deleteStok
untuk menghapus rekapan data pada tabel PEMBELIAN dengan kd_brg tertentu sesaat
dilakukannya hapus data stok pada kd_brg tertentu di tabel BARANG.

DELIMITER //

CREATE TRIGGER updateStokEdit


AFTER DELETE ON barang

FOR EACH ROW BEGIN

DELETE FROM pembelian


WHERE kd_brg = OLD.kd_brg;
END//

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:

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 8


MODUL PRAKTIKUM BASIS DATA

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

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 9


MODUL PRAKTIKUM BASIS DATA

VIEW: info_mahasiswa_ambil_matakuliah untuk melihat data mahasiswa yang


mengambil matakuliah.

CREATE VIEW info_mahasiswa_ambil_matakuliah AS


SELECT mhs.npm, mhs.nama, mk.nama_makul FROM MAHASISWA mhs
INNER JOIN AMBIL_MK a ON mhs.npm = a.npm
INNER JOIN MATAKULIAH mk ON a.kode_mk = mk.id_makul;

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:

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 10


MODUL PRAKTIKUM BASIS DATA

Buatlah VIEW untuk mendefinisikan siapa saja mahasiswa yang tidak mengambil matakuliah.
Jelaskan caranya, screenshot pembuatan dan pengolahan/program tampilkan di bawah ini:

6. Membuat Nested View dan Updatable View


Dalam membuat view, tidak menutup kemungkinan bagi kita untuk menciptakan view dalam
view. Pendekatan inilah yang dikenal sebagai view bersarang (nested 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 dua
VIEW yaitu data_matakuliah dan data_matakuliah_2 untuk melihat data
matakuliah di semester 2:

CREATE VIEW data_matakuliah AS


SELECT * FROM MATAKULIAH;

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 11


MODUL PRAKTIKUM BASIS DATA

CREATE VIEW data_matakuliah_2 AS


SELECT * FROM data_matakuliah WHERE 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.

CREATE VIEW tampil_mahasiswa AS


SELECT * FROM MAHASISWA;

UPDATE tampil_mahasiswa
SET alamat = ‘Jl. Juata Permai’
WHERE npm = 101;

Eksekusi pernyataan diatas. Periksa hasil modifikasi di view tampil_mahasiswa,


kemudian periksa data di tabel MAHASISWA. Jelaskan apa yang terjadi, screenshot pembuatan
dan pengolahan/program tampilkan di bawah ini:

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 12


MODUL PRAKTIKUM BASIS DATA

7. CHECK OPTION pada View


Pada saat menciptakan updatable view, MySQL mengizinkan kita untuk menspesifikasikan
bagaimana parser akan bekerja. Langkah ini dilakukan dengan mengaktifkan CHECK
OPTION. Sederhananya, opsi ini mengakibatkan parser me-review klausa WHERE ketika
memproses pernyataan update di view. Ada dua jenis keyword yang bisa digunakan saat
aktivasi check option: LOCAL dan CASCADED. Keyword LOCAL membatasi pemeriksaan
hanya sebatas pada view yang didefinisikan, sedangkan CASCADED mencakup semua view
yang terkait misalkan dalam kasus nested 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 tiga
VIEW yaitu vMkOption, vMkLokal dan vMkCascade sebagai berikut:

CREATE VIEW vMkOption


AS
SELECT * FROM matakuliah
WHERE sks < 2
WITH CHECK OPTION;

CREATE VIEW vMkLokal


AS
SELECT * FROM vMkOption
WHERE sks > 0
WITH LOCAL CHECK OPTION;

CREATE VIEW vMkCascade


AS

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 13


MODUL PRAKTIKUM BASIS DATA

SELECT * FROM vMkOption


WHERE sks > 0
WITH CASCADED CHECK OPTION;

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:

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 14


MODUL PRAKTIKUM BASIS DATA

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.

Penjelasan, sintaks, screenshot pembuatan dan pengolahan/program untuk kedua soal


tuliskan/tampilkan di bawah ini:

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 15


MODUL PRAKTIKUM BASIS DATA

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 16


MODUL PRAKTIKUM BASIS DATA

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.

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 17

Anda mungkin juga menyukai