Tabel Trigger PERANCANGAN DAN PEMBUATAN PERANGKAT LUNAK SISTEM REPORT EVENT BERBASIS WEB MENGGUNAKAN METODE BERORIENTASI OBYEK.

121

4.4 Tabel

Seperti yang terlihat pada Gambar 4.19 Tabel cikalbakalcreative, dapat dijelaskan tabel-tabel yang terdapat pada database, diantaranya : a. Tabel Customer berisi data-data customer yakni nomor KTP, nama anak customer, nama customer, tanggal lahir anak, alamat dan nomor telepon. b. Tabel Detail Event berisi data-data detail event yang berlangsung yakni id_event, id_master, id_pegawai, tanggal, venue, alamat, kota dan periode event. c. Tabel Hadiah berisi data-data hadiah yang didapat dari produk yang bersangkutan. d. Tabel Jabatan berisi jabatan yang yang disandang oleh pegawai yang bersangkutan. e. Tabel Laporan berisi event dan juga total penjualan dari event yang sudah berjalan serta jumlah pembeli pada event tersebut. f. Tabel Master_Event berisi nama dari event yang sedang berjalan. g. Tabel Master_Produk berisi nama produk h. Tabel Pegawai berisi data-data pegawai yakni username, password, nama, alamat, jenis kelamin, nomor telepon, gaji pegawai dan total penjualan dari pegawai yang bersangkutan. i. Tabel Penjualan berisi data-data penjualan dengan nomor KTP customer yang membeli produk. j. Tabel Prodet_Event berisi produk mana saja yang masuk ke dalam promosi event yang bersangkutan. 122 k. Tabel Produk berisi data-data produk yakni ukuran, varian, rasa, jenis dan harga produk serta total penjualan dari produk tersebut. Gambar 4.19 Tabel Database Cikalbakalcreative

4.5 Trigger

Seperti yang terlihat pada Gambar 4.20 Trigger dapat dijelaskan per-baris mengenai sintaks-sintaks didalamnya, sebagai berikut : create trigger cikalbakalcreative.PJ_PEGAWAI_INSERT AFTER INSERT On cikalbakalcreative.penjualan for each row begin Dapat dijelaskan sintaks diatas yakni, create trigger cikalbakalcreative.PJ_PEGAWAI_INSERT yang berarti membuat trigger baru. 123 Trigger adalah nama dari objek database yang berhubungan dengan table yang aktif ketika ada event yang terjadi pada table yang dimaksud disini adalah database cikalbakalcreative. Trigger tersebut terkait dengan nama table yakni PJ_PEGAWAI atau penjualan pegawai. AFTER INSERT disini merupakan waktu dari trigger tersebut yang diaktifkan sebelum BEFORE atau sesudah AFTER baris dimodifikasi pada database cikalbakalcreative. Dalam trigger digunakan for each row begin yang memungkinkan dieksekusi beberapa kali per baris, seperti ketika meng-update ataupun menghapus beberapa baris. Yang berlaku disini adalah trigger INSERT, dimana ketika ada inputan baru pada tabel penjualan maka trigger tersebut akan dijalankan. DECLARE IN_idevent varchar25; DECLARE IN_idproduk varchar25; DECLARE IN_idpegawai int; DECLARE IN_totpenjualanpeg int; DECLARE IN_totpenjualanev int; DECLARE IN_totpenjualanprod int; DECLARE IN_totpenjualanprodet int; DECLARE AdaLaporan int; DECLARE IN_periodeevent int; DECLARE IN_tglevent DATE; DECLARE IN_tglinput date; DECLARE Tglmax DATE; DECLARE Tot_pembeli int; Dapat dijelaskan sintaks diatas yakni, DECLARE merupakan definisi dari variabel yang digunakan dalam trigger. set IN_idevent = new.ID_EVENT; set IN_idproduk = new.ID_PRODUK; set IN_tglinput = new.TGL_PENJUALAN; Dapat dijelaskan sintaks diatas yakni, set IN yakni menetapkan nilaidari variabel idevent, idproduk, tglinput menjadi new atau nilai baru. SELECT TGL_EVENT,PERIODE_EVENT into IN_tglevent,IN_periodeevent FROM DETAIL_EVENT WHERE ID_EVENT=IN_idevent; 124 Dapat dijelaskan sintaks diatas yakni, SELECT menampilkan tanggal event dan juga periode event pada id_tglevent dan periodeevent FROM yang diambil dari tabel detail_event WHERE dimana id_event-nya sama. SELECT INTERVAL IN_periodeevent MONTH + IN_tglevent into Tglmax; Dapat dijelaskan sintaks diatas yakni, SELECT menampilkan panjang dari tanggal pada periodeevent selama beberapa bulan dari tanggal event pada Tglmax . Jadi misalnya, event berjalan tanggal 1 Januari – 31 Januari yang berarti event tersebut dihitung periode event-nya selama 1 bulan. IF IN_tglinput = Tglmax THEN Dapat dijelaskan sintaks diatas yakni, akan dijalankan apabila tanggal yang dimasukkan tidak lebih dari Tglmax maka akan dijalankan sintaks-sintaks selanjutnya. SELECT PEGAWAI.ID_PEGAWAI into IN_idpegawai FROM PEGAWAI, DETAIL_EVENT WHERE PEGAWAI.ID_PEGAWAI = DETAIL_EVENT.ID_PEGAWAI AND DETAIL_EVENT.ID_EVENT = IN_idevent; Dapat dijelaskan sintaks diatas yakni, SELECT menampilkan id_pegawai pada tabel pegawai yang nilainya pada IN_idpegawai. FROM Yang datanya diambil dari tabel pegawai dan detail_event, WHERE dimana id_pegawai pada tabel pegawai sama dengan id_pegawai pada detail_event dan id_event pada tabel detail_event nilainya sama seperti variabel IN_idevent. SELECT sumpenjualan.harga_total into IN_totpenjualanprod FROM penjualan WHERE penjualan.ID_PRODUK = IN_idproduk; Dapat dijelaskan sintaks diatas yakni, SELECT menampilkan sum penjumlahan dari harga total tabel penjualan yang masuk pada variabel IN_totpenjualanprod yakni total penjualan dari produk. FROM yang datanya 125 diambil dari tabel penjualan, dimana id_produk pada tabel penjualan nilainya sama seperti variabel IN_idproduk. SELECT sumpenjualan.harga_total into IN_totpenjualanprodet FROM penjualan WHERE penjualan.ID_PRODUK = IN_idproduk and penjualan.ID_EVENT = IN_idevent; Dapat dijelaskan sintaks diatas yakni, SELECT menampilkan sum penjumlahan dari harga total tabel penjualan yang masuk pada variabel IN_totpenjualanprodet yakni total penjualan dari produk yang ikut dalam promosi event. FROM yang datanya diambil dari tabel penjualan, WHERE dimana id_produk pada tabel penjualan nilainya sama seperti IN_idproduk dan id_event- nya nilainya sama seperti variabel IN_idevent. SELECT sumpenjualan.harga_total into IN_totpenjualanpeg FROM penjualan,detail_event WHERE penjualan.ID_EVENT=detail_event.ID_EVENT and detail_event.ID_PEGAWAI = IN_idpegawai; Dapat dijelaskan sintaks diatas yakni, SELECT menampilkan sum penjumlahan dari harga total tabel penjualan yang masuk pada variabel IN_totpenjualanpeg yakni total penjualan dari pegawai yang bersangkutan. FROM yang datanya diambil dari tabel penjualan dan tabel detail_event, WHERE dimana id_event pada tabel penjualan disamakan dengan id_event pada tabel detail_event dan id_pegawai-nya nilainya sama seperti variabel IN_idpegawai. SELECT sumpenjualan.harga_total into IN_totpenjualanev FROM penjualan,detail_event WHERE penjualan.ID_EVENT = detail_event.ID_EVENT and detail_event.ID_EVENT = IN_idevent; 126 Dapat dijelaskan sintaks diatas yakni, SELECT menampilkan sum penjumlahan dari harga total tabel penjualan yang masuk pada variabel IN_totpenjualanev yakni total penjualan dari event yang berlangsung. FROM yang datanya diambil dari tabel penjualan dan tabel detail_event, WHERE dimana id_event pada tabel penjualan disamakan dengan id_event pada tabel detail_event dan id_event pada tabel detail_event nilainya sama seperti variabel IN_idevent. UPDATE pegawai set TOT_PENJUALAN_PEG=IN_totpenjualanpeg WHERE ID_PEGAWAI = IN_idpegawai; Dapat dijelaskan sintaks diatas yakni, UPDATE memperbarui tabel pegawai dengan mengatur TOT_PENJUALAN_PEG yang masuk pada variabel IN_totpenjualanpeg. Dimana id_pegawai nilainya sama dengan IN_idpegawai. SELECT count1 into AdaLaporan FROM laporan WHERE ID_EVENT=IN_idevent; IF AdaLaporan = 1 THEN UPDATE laporan set VALUE_OF_SALES = IN_totpenjualanev WHERE ID_EVENT = IN_idevent; ELSE INSERT into laporan ID_EVENT,VALUE_OF_SALES valuesIN_idevent,IN_totpenjualanev; END IF; Dapat dijelaskan sintaks diatas yakni, SELECT menampilkan penghitungan angka tiap barisnya pada variabel AdaLaporan. FROM yang datanya diambil dari tabel laporan, WHERE dimana id_event-nya nilainya sama dengan variabel IN_idevent. Dengan ketentuan atau syarat apabila TRUE, IF apabila ada laporan yang masuk 1 satu maka perbarui UPDATE tabel laporan pada VALUE_OF_SALES nilainya sama dengan variabel IN_totpenjualanev WHERE dimana id_event disamakan dengan variabel IN_idevent. Kalau syarat tadi tidak terpenuhi, maka 127 dijalankan ELSE. INSERT pada tabel laporan yaitu ID_EVENT, VALUE_OF_SALES dengan nilai variabelnya IN_idevent, IN_totpenjualanev dan diakhiri dengan END IF;. SELECT COUNTDISTINCT NOMOR_KTP into Tot_pembeli FROM `penjualan` WHERE ID_EVENT = IN_idevent; UPDATE laporan set JUMLAH_PEMBELI = Tot_pembeli WHERE ID_EVENT = IN_idevent; Dapat dijelaskan sintaks diatas yakni, SELECT menampilkan jumlah COUNT nomor KTP pada variabel Tot_pembeli dari tabel penjualan . WHERE dimana id_event nilainya sama seperti variabel IN_idevent. Lalu perbarui tabel laporan dengan mengatur JUMLAH_PEMBELI sama dengan variabel Tot_pembeli, WHERE dimana id_event nilainya sama seperti IN_idevent. UPDATE produk set TOT_PENJUALAN_PRO = IN_totpenjualanprod WHERE ID_PRODUK = IN_idproduk; Dapat dijelaskan sintaks diatas yakni, UPDATE perbarui tabel produk dengan mengatur TOT_PENJUALAN_PRO yang nilainya sama seperti variabe l IN_totpenjualanprod, WHERE dimana id_produk nilainya sama dengan IN_idproduk. UPDATE prodet_event set TOT_PENJUALAN_PRODET=IN_totpenjualanprodet WHERE ID_PRODUK = IN_idproduk and ID_EVENT = IN_idevent; ELSE message END IF; end Dapat dijelaskan sintaks diatas yakni, UPDATE perbarui tabel prodet_event dengan mengatur TOT_PENJUALAN_PRODET yang nilainya sama dengan IN_totpenjualanprodet, WHERE dimana id_produk-nya nilainya sama dengan variabel IN_idproduk dan id_event-nya nilainya sama dengan variabel IN_idevent. Lalu akhiri sintaks dengan END IF; END. 128 Gambar 4.20 Trigger Selain itu ada trigger UPDATE , dimana ketika ada inputan baru pada tabel penjualan maka trigger tersebut akan dijalankan. Apabila id dari inputan tersebut sama dengan yang sudah ada, maka tabel tersebut akan di-update. Dan yang 129 terakhir adalah trigger DELETE , dimana tabel-tabel yang berhubungan dapat langsung terhapus otomatis apabila salah satu isi dari tabel yang bersangkutan tersebut dihapus.

4.6 Implementasi Antarmuka