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