Anda di halaman 1dari 16

Teknologi Basis Data

TUGAS 2 Store Procedure dan Trigger

Nama : Kadek Adi Praptha NIM : 1104505054

JURUSAN TEKNOLOGI INFORMASI FAKULTAS TEKNIK UNIVERSITAS UDAYANA BUKIT JIMBARAN

1. PDM(Physical Data Model). PDM merupakan gambaran secara detail basis data dalam bentuk fisik. Penggambaran rancangan PDM memperlihatkan struktur penyimpanan data yang benar pada basis data yang digunakan sesungguhnya. Pada PDM dibawah ini merupakan PDM dari database restoran, dimana terdapat table tb_ transaksi, table tb_detail_transaksi, tb_user, tb_customer, dan tb_menu.

Gambar 1.1 PDM db_restoran

2. Store Procedure Store procedure adalah kumpulan-kumpulan SQL berupa rountine yang disimpan dalam database MySQL Server. Berikut adalah pembuatan sekaligus penggunaan storedprocedure pada db_restoran. 2.1.Menampilkan data a. Menampilkan Table transaksi Pada store procedure tampilkan_transaksi() ini dimaksudkan untuk menampilkan data dalam 2 kondisi yaitu menampilkan data berdasar input-an id_transaksi atau secara keseluruhan.
DELIMITER$$ CREATE PROCEDURE tampilkan_transaksi(pilihan VARCHAR(25), id_tran INT) BEGIN IF (pilihan= 'id')THEN SELECT * FROM tb_transaksi WHERE id_transaksi=id_tran; ELSEIF(pilihan='semua')THEN SELECT * FROM tb_transaksi;

END IF; END$$ DELIMITER; Kode program 2.1 procedure menampilkan data transaksi

Berikut merupakan pemanggilan store prosedur untuk menampilkan tb_transaksi pada db_restoran yang memiliki id=1001.
CALL tampilkan_transaksi ('id','1001') Dari gambar diatas tampilannya adalah sebagai berikut :

Gambar 2.1 menampilkan id=1001 Dapat dijelaskan bahwa perintah diatas digunakan untuk menampilkan data pada table tb_transaksi yang memiliki id transaksi =1001.

b. Menampilkan dari table tb_detail_transaksi Pada store procedure tampilkan_detail_transaksi() ini dimaksudkan untuk menampilkan data dalam 2 kondisi yaitu menampilkan data berdasar input-an id__detail_transaksi atau secara keseluruhan.
DELIMITER$$ CREATE PROCEDURE tampilkan_detail_transaksi(pilihan VARCHAR(25), id_tran INT) BEGIN IF (pilihan= 'id')THEN SELECT * FROM tb_detail_transaksi WHERE id_detail_transaksi=id_tran; ELSEIF(pilihan='semua')THEN SELECT * FROM tb_detail_transaksi; END IF; END$$ DELIMITER; Kode program 2.2 procedure menampilkan table detail transaksi

Berikut merupakan store prosedur untuk menampilkan tb_detail_transaksi pada db_restoran yang memiliki id=1.
CALL tampilkan_detail_transaksi ('id','1') Dari gambar diatas tampilannya adalah sebagai berikut :

Gambar 2.2 menampilkan id=1

c. Menampilkan dari table tb_customer Pada store procedure tampilkan_customer() ini dimaksudkan untuk menampilkan data dalam 2 kondisi yaitu menampilkan data berdasar input-an id_menu atau secara keseluruhan.
DELIMITER$$ CREATE PROCEDURE tampilkan_customer (pilihan VARCHAR(25), id_cus INT) BEGIN IF (pilihan= 'id')THEN SELECT * FROM tb_customer WHERE id_customer =id_cus; ELSEIF(pilihan='semua')THEN SELECT * FROM tb_customer; END IF; END$$ DELIMITER; Kode program 2.3 procedure menampilkan data customer

Berikut merupakan store prosedur untuk menampilkan tb_customer pada db_restoran secara keseluruhan..
CALL tampilkan_customer ('semua',NULL)

Dari gambar diatas tampilannya adalah sebagai berikut :

Gambar 2.3 menampilkan seluruh data

d. Menampilkan dari table tb_menu Pada store procedure tampilkan_harga() ini dimaksudkan untuk menampilkan data dalam 2 kondisi yaitu menampilkan data berdasar input-an id_menu atau secara keseluruhan
DELIMITER$$ /*drop procedure if exists tampilkan_harga $$ untuk mngganti store prosedur yg sudah ada*/ CREATE PROCEDURE tampilkan_harga (pilihan VARCHAR(25), harga INT) BEGIN IF (pilihan= 'harga')THEN SELECT nama_menu,harga_menu FROM tb_menu WHERE harga_menu =harga; ELSEIF(pilihan='semua')THEN SELECT * FROM tb_menu; END IF; END$$ DELIMITER; Kode program 2.4 procedure menampilkan tb_menu

Berikut merupakan store prosedur untuk menampilkan nama_menu dan harga_menu yang memiliki harga=15000 pada db_restoran.
CALL tampilkan_harga ('harga','15000')

Dari gambar diatas tampilannya adalah sebagai berikut :

Gambar 2.4 menampilkan nama menu & harga=15000

e. Menampilkan dari table tb_user Pada store procedure tampilkan_user() ini dimaksudkan untuk menampilkan data dalam 2 kondisi yaitu menampilkan data berdasar input-an id__user atau secara keseluruhan.
DELIMITER$$ CREATE PROCEDURE tampilkan_user (pilihan VARCHAR(25), asal VARCHAR(25)) BEGIN IF (pilihan= 'almt')THEN SELECT * FROM tb_user WHERE alamat =asal; ELSEIF(pilihan='semua')THEN SELECT * FROM tb_user; END IF; END$$ DELIMITER; Kode program 2.5 procedure menampilkan data user

Berikut merupakan store prosedur untuk menampilkan data tb_user yang memiliki alamat dari bangle.
CALL tampilkan_user ('almt','bangli') Dari gambar diatas tampilannya adalah sebagai berikut :

Gambar 2.5 menampilkan nama data beralamat bangle

2.2. Mengubah data table a. Merubah data dari table user Pada store prosedur update_user() dimaksudkan untuk mengubah data yang ada didalam table user, dimana terdapat beberapa pilihan untuk mengubah data tersebut seperti mengubah username, password, nama, alamat, serta no telepon. Yang dibedakan atas parameter pilihan. Dibawah ini merupakan salah satu perintah update untuk mengubah data username yang memiliki id_user=1 dengan username baru=praptha.
DELIMITER$$ /*drop procedure if exists update_user $$ */ CREATE PROCEDURE update_user (pilihan VARCHAR(25), baru VARCHAR(25), id INT) BEGIN IF (pilihan= 'username')THEN UPDATE tb_user SET username=baru WHERE id_user=id; ELSEIF(pilihan='passwordd')THEN UPDATE tb_user SET passwordd=baru WHERE id_user=id; ELSEIF(pilihan='nama_lengkap')THEN UPDATE tb_user SET nama_lengkap=baru WHERE id_user=id; ELSEIF(pilihan='alamat')THEN UPDATE tb_user SET alamat=baru WHERE id_user=id; ELSEIF(pilihan='telepon')THEN UPDATE tb_user SET telepon=baru WHERE id_user=id; END IF; END$$ DELIMITER; CALL update_user ('username','praptha','1') Kode program 2.6 update username user

Berikut merupakan tampilan awal sebelum data di update

Gambar 2.6 tampilan sebelum update username user

Dan setelah prosedur di run maka menghasilkan perubahan seperti berikut

Gambar 2.7 tampilan ssesudah update username user

b. Merubah data dari table user Pada store prosedur update_customer() dimaksudkan untuk mengubah data yang ada didalam table customer, dimana terdapat beberapa pilihan untuk mengubah data tersebut seperti mengubah nama, alamat, serta no telepon. Yang dibedakan atas parameter pilihan. Dibawah ini merupakan salah satu perintah update untuk mengubah data alamat yang memiliki id_user=2 dengan alamat baru=denpasar.
DELIMITER$$ CREATE PROCEDURE update_customer (pilihan VARCHAR(25), baru VARCHAR(25), id INT) BEGIN IF (pilihan='nama')THEN UPDATE tb_customer SET nama=baru WHERE id_customer=id; ELSEIF(pilihan='alamat')THEN UPDATE tb_customer SET alamat=baru WHERE id_customer=id; ELSEIF(pilihan='telepon')THEN UPDATE tb_customer SET telepon=baru WHERE id_customer=id; END IF; END$$ DELIMITER; CALL update_customer ('alamat','denpasar','2') Kode program 2.8 update alamat customer Berikut merupakan tampilan awal sebelum data di update

Gambar 2.8 tampilan sebelum update alamat customer

Dan setelah prosedur di run maka menghasilkan perubahan seperti berikut

Gambar 2.9 tampilan sesudahu update alamat customer

c. Merubah data dari table menu Pada store prosedur update_menu() dimaksudkan untuk mengubah data yang ada didalam table menu, dimana terdapat beberapa pilihan untuk mengubah data tersebut seperti mengubah nama_menu, harga_menu, serta detail. Yang dibedakan atas parameter pilihan. Dibawah ini merupakan salah satu perintah update untuk mengubah data harga yang memiliki id_user= 130104 dengan harga baru=70000.
DELIMITER $$ DROP PROCEDURE IF EXISTS update_menu $$ CREATE PROCEDURE update_menu (pilihan VARCHAR(25), baru VARCHAR(25), id INT) BEGIN IF (pilihan='nama_menu')THEN UPDATE tb_menu SET nama_menu=baru WHERE id_menu=id; ELSEIF(pilihan='harga_menu')THEN UPDATE tb_menu SET harga_menu=baru WHERE id_menu=id; ELSEIF(pilihan='detail')THEN UPDATE tb_menu SET detail=baru WHERE id_menu=id; END IF; END$$ DELIMITER ; CALL update_menu('harga_menu','7000','130104') Kode program 2.9 update alamat menu Berikut merupakan tampilan awal sebelum data di update

Gambar 2.10 tampilan sebelum update harga menu

Dan setelah prosedur di run maka menghasilkan perubahan seperti berikut

Gambar 2.11 tampilan sesudahu update harga menu

2.3.Trigger Trigger adalah sebuah objek database yang diasosiasikan dengan sebuah table dan akan aktif (terpicu/trigger) ketika sebuah event terjadi pada table tersebut. Trigger hanya terjadi ketika ada eksekusi INSERT, DELETE dan UPDATE pada table yang bersangkutan. Waktu eksekusi trigger yang mungkin terjadi terdiri dari 2 yaitu BEFORE dan AFTER dari statement SQL-nya. Berikut ini bentuk umum perintah untuk membuat triggers:
CREATE TRIGGER name [BEFORE|AFTER] [INSERT|UPDATE|DELETE] ON tablename FOR EACH ROW statement

Keterangan dari bentuk umum perintah membuat trigger: name, Nama trigger mengikuti peraturan penamaan variabel / identifier dalam MySQL [BEFORE | AFTER] digunakan untuk menentukan kapan proses secara otomatis akan dieksekusi, sebelum atau sesudah proses. [INSERT | UPDATE | DELETE] digunakan untuk menentukan event (proses) yang dijadikan trigger (pemicu) untuk menjalankan perintah-perintah di dalam triggers. tablename, merupakan nama tabel dimana trigger berada. statement, merupakan sekumpulan perintah atau query yang akan secara otomatis dijalankan jika event / proses yang didefinisikan sebelumnya aktif. Statement atau perintah dalam trigger dapat berupa satu perintah saja, dan dapat juga beberapa perintah sekaligus. Jika terdapat beberapa perintah dalam trigger, maka gunakan perintah BEGIN dan END untuk mengawali dan mengakhiri perintah. Di dalam statement trigger, kita dapat mengakses record tabel sebelum atau sesudah proses dengan menggunakan NEW dan OLD. NEW digunakan untuk mengambil record yang akan diproses (insert atau update), sedangkan OLD digunakan untuk mengakses record yang sudah diproses (update atau delete).

a. Trigger update Pada trigger disini dimaksud untuk mengubah data pada table menu, dimana sebelum dilakukannya proses trigger harus dibuatkan terlebih dahulu table baru untuk menyimpan data lama(OLD) yang akan di ubah/update. Berikut ini contoh trigger untuk update harga menu yang memiliki id=130303 dari harga awal 10000 menjadi 10500.
DELIMITER ; DELIMITER $$ CREATE TRIGGER insert_menu AFTER UPDATE ON restoran.`tb_menu` FOR EACH ROW BEGIN INSERT INTO restoran.`tb_trigger_menu` (id_menu, nema_menu, harga_menu, detail, event, STATUS, tanggal) VALUES (OLD.id_menu, OLD.nama_menu, OLD.harga_menu, OLD.detail, 'insert data', 'after', NOW()); END$$ DELIMITER ; Kode program 2.10 triger harga menu

Sedangkan coding update untuk melihat apakah trigger berfungsi adalah sebagai berikut (sintak untuk memanggil procedure update):
CALL update_menu('harga_menu','7000','130104') Kode program 2.11 update table menu

Tampilan awal table tb_menu sebelum update adalah sebagai berikut:

Gambar 2.12 tampilan sebelum di trigger

Tampilan setelah table tb_menu di update adalah sebagai berikut :

Gambar 2.13 tampilan setelah di trigger

Sedangkan tampilan table tambahan (tb_trigger_menu) untuk menyimpan data lama(data yang di update) dan untuk membuktikan kalau trigger berfungsi adalah sebagai berikut :

Gambar 2.14 tabel trigger(penyimpan data lama) Dapat dijelaskan dari table diatas bahwa data field id_menu, nama_menu, harga_menu, dan field detail merupakan field untuk menyimpan datadari table yang di update yaitu table menu. Sedangkan event merupakan penjelasan hal yang dilakukan oleh trigger apakah itu insert, update maupun delete, sedangkan status merupakan status kapan dilakukannya trigger apakah after atau before (setelah/sebelum) dilakukannya proses update.

b. Trigger insert Pada trigger disini dimaksud untuk menambah data pada table menu, dimana sebelum dilakukannya proses trigger harus dibuatkan terlebih dahulu table baru untuk menyimpan data lama(OLD) yang akan di tambah. Berikut ini contoh trigger untuk insert data ke table menu
DELIMITER $$ CREATE TRIGGER insert_menu AFTER INSERT ON tb_menu FOR EACH ROW BEGIN INSERT INTO restoran.`tb_trigger_menu` (id_menu, nama_menu, harga_menu, detail, event, STATUS, tanggal) VALUES (NEW.id_menu, NEW.nama_menu, NEW.harga_menu, NEW.detail, 'insert data', 'after', NOW()); END$$

DELIMITER ; Kode program 2.15 triger insert

Sedangkan coding update untuk melihat apakah trigger berfungsi adalah sebagai berikut (sintak insert table biasa):
INSERT INTO tb_menu (nama_menu, harga_menu, detail) VALUES ('paket tek','10000','1 buah ayam goreng, nasi, cocacola') Kode program 2.16 insert data

Tampilan insert data adalah sebagai berikut :

Gambar 2.15 tampilan setelah di trigger

Sedangkan tampilan table tambahan (tb_trigger_menu) untuk menyimpan data lama(data yang telah di insert/record) dan untuk membuktikan kalau trigger berfungsi adalah sebagai berikut :

Gambar 2.16 tabel trigger (penyimpan data lama)

Dapat dijelaskan dari table diatas bahwa data field id_menu, nama_menu, harga_menu, dan field detail merupakan field untuk menyimpan data dari table yang di insert ke table menu. Sedangkan event merupakan penjelasan kejadian yang dilakukan oleh trigger apakah itu insert, update maupun delete, sedangkan status merupakan status kapan dilakukannya trigger apakah after atau before (setelah/sebelum) dilakukannya proses insert. Jadi dapat dikatakan bahwa tigger merupakan record proses dari suatu database.

c. Trigger delete Pada trigger disini dimaksud untuk menambah data pada table menu, dimana sebelum dilakukannya proses trigger harus dibuatkan terlebih dahulu table baru untuk menyimpan data lama(OLD) yang akan di hapus. Berikut ini contoh trigger untuk delete data ke table menu
DELIMITER $$ DROP TRIGGER IF EXISTS delete_menu $$

CREATE TRIGGER delete_menu AFTER DELETE ON tb_menu FOR EACH ROW BEGIN INSERT INTO restoran.`tb_trigger_menu` (id_menu, nama_menu, harga_menu, detail, event, STATUS, tanggal) VALUES (OLD.id_menu, OLD.nama_menu, OLD.harga_menu, OLD.detail, 'insert data', 'after', NOW()); END$$ DELIMITER ; Kode program 2.17 triger delete

Sedangkan coding update untuk melihat apakah trigger berfungsi adalah sebagai berikut (sintak delete table biasa):
DELETE FROM tb_menu WHERE id_menu=130317 Kode program 2.18 delete data

Perintah diatas merupakan perintah untuk menghapus data dengan id=130317 dari table menu. Tampilan data dari table menu sebelum di delete adalah sebagai berikut :

Gambar 2.19 tampilan sebelum di delete

Setelah dilakukan query delete adalah sebagai berikut :

Gambar 2.20 tampilan setelah di deleter

Sedangkan tampilan table tambahan (tb_trigger_menu) untuk menyimpan data lama(data yang telah di delete/record) dan untuk membuktikan kalau trigger berfungsi adalah sebagai berikut :

Gambar 2.21 tabel trigger (penyimpan data lama)

Dapat dijelaskan dari table diatas bahwa data field id_menu, nama_menu, harga_menu, dan field detail merupakan field untuk menyimpan data yang di delete pada table menu. Sedangkan event merupakan penjelasan kejadian yang dilakukan oleh trigger apakah itu delete, update maupun delete, sedangkan status merupakan status kapan dilakukannya trigger apakah after atau before (setelah/sebelum) dilakukannya proses delete. Jadi dapat dikatakan bahwa tigger merupakan record proses dari suatu database.

Daftar pustaka
http://achmatim.net/2010/02/24/mengenal-trigger-di-mysql/ http://elib.unikom.ac.id/files/disk1/370/jbptunikompp-gdl-andriherya-18491-14-pertemua-r.pdf http://blog.creanivate.com/2012/12/cara-membuat-trigger-di-mysql-database.html http://agusandi.wordpress.com/2010/03/15/apa-itu-cdm-fan-pdm/