DATA BASES PT.BORWITA CITRA PRIMA
PENGELOLAHAN DATA
PEGAWAI DAN KONSUMEN
Laporan untuk Memenuhi Tugas Akhir Matakuliah Praktikum Basis Data
yang Dibina oleh Utomo Pujianto, S.Kom, M.Kom
Oleh:
Riska Rosidatul Ula (150535602305)
Septian Putra (150535604702)
Siti Nurwakiah Barokah (150535601299)
Widya Lestari (150535603457)
Yehezkiel Glori Cahya P (150535601684)
UNIVERSITAS NEGERI MALANG
FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
April 2016
DATA BASES PT.BORWITA CITRA PRIMA
PENGELOLAHAN DATA PEGAWAI DAN KONSUMEN
A. Latar Belakang
Perkembangan teknologi di area jaman sekarang tumbuh dan berkembang
secara pesat. Hampir di semua kalangan perusahaan dan instansi menggunakan
teknologi informasi. Salah satunya, informasi didalam sebuah perusahaan
atau sebuah organisasi sangat penting untuk mendukung dan membantu dalam
kegiatan kerja.
Dalam sebuah perusahaan/organisasi merupakan hal yang wajib untuk
memiliki sebuah system. Karena dengan system tersebut akan sangat membantu
mereka dalam pengaksesan data akan lebih mudah untuk mendapatkannya dan
juga mudah untuk melakukan perhitungan dalam jumlah yang cukup banyak
sehingga infromasi yang diperoleh lebih baik dan cepat.
Dan dalam makalah ini kami akan menjelaskan program yang telah kami
buat yaitu menghitung gaji karyawan dalam sebuah perusahaan. Untuk
menjalankan program ini terlebih dahulu menginstall aplikasi xampp lalu
menjalankan aplikasi cmd(command prompt).
Untuk basis data ini digunakan 11 buah tabel sebagai berikut :
1. Table pembelian yang terdiri dari lima buah field yaitu id_beli,
id_barang, jumlah, total, dan id_toko.
2. Table barang yang terdiri dari empat buah field yaitu nama_barang,
id_barang, harga, dan stok.
3. Table jadwal_kirim yang terdiri dari lima buah field yaitu jadwal,
id_kirim, id_beli, id_seles, dan juga wilayah.
4. Table target_seles terdiri dari empat buah field yaitu
id_target_seles, id_seles, bulan_tahun, dan juga target_pendapatan.
5. Table target_supervisior terdiri dari empat buah field yaitu
id_target_supervisior, id_supervisior, bulan_tahun, dan juga
target_pendapatan.
6. Table gaji_seles terdiri dari tiga buah field yaitu gaji_seles,
id_seles dan juga gaji.
7. Table gaji_supervisior terdiri dari tiga buah field yaitu
gaji_supervisior, id_supervisior dan juga gaji.
8. Table took terdiri dari empat buah field yaitu id_toko, nama_toko,
alamat, dan juga cp.
9. Table supervisior terdiri dari lima buah field yaitu
id_supervisior, nama, alamat, wilayah, dan juga
target_gaji_supervisior.
10. Table seles terdiri dari lima buah field yaitu id_seles, nama,
alamat, wilayah, dan juga target_gaji_seles.
11. Table wilayah terdiri dari empat buah field yaitu id_wilayah,
wilayah, target_gaji_supervisior, dan juga target_gaji_seles
B. Tujuan
1. Mendukung dan membantu dalam kegiatan kerja .
2. Mempermudah pegawai/seles dalam melakukan pengiriman barang pada
konsumen/pembeli.
3. Mempermudah membagian pada suatu wilayah berdasarkan dengan wilayah
dari pegawai PT tersebut.
4. Mempermudah dalam penghitungan gaji dan juga pendapatan pegawai.
5. Membant dalam proses menghitungan stok barang dan sisa barang dari
pembelian konsumen.
6. Mengetahui pola konsumsi komsumen dengan pola pembelian yang dilakukan
oleh konsumen
C. Dasar Teori
DDL DAN DML
1. SQL (Structured Query Language)
SQL (atau query language) adalah sebuah bahasa yang di gunakan untuk
me-request informasi dari basis data. Bahasa ini sudah di sediakan
oleh DBMS. Konstruksi SQL terbentuk atas kombinasi relational-
algebra dan relational-calculus.
2. DDL (Data Definition Language)
DDL menyediakan perintah-perintah untuk mendefinisikan,
memodifikasi, dan menghapus skema relasi misalnya tabel, view,
prosedur, dan fungsi
Contoh perintah DDL adalah: CREATE, ALTER dan DROP.
3. DML (Data Manipulation Language)
DML menyediakan perintah-perintah unruk menambah. Memodifikasi,
menghapus dan mengambil data di dalam basis data.
Contoh perintah DML adalah: INSERT,UPDATE,DELETE, dan SELECT.
a. Penambahan Data
Sintaks operasi penambahan data dapat dituliskan sebagai
berikut:
Di mana:
r adalah relasi (tabel)
A adalah Atribut (field atau kolom)
V adalah value (nilai yang diisikan)
Misalkan tabel jurusan memiliki field id dan nama, maka
pernyataan SQL untuk penambahan data dituliskan sebagai berikut:
b. Modifikasi Data
Sintaks Modifikasi Data dapat dituliskan sebagai berikut:
Dimana :
P adalah Predikat
Misalkan nilai field nama untuk data dengan id 1 ingin di ubah
menjadi Tknik Informatika, berikut pernyataan SQL nya:
c. Penghapusan Data
Sintaks Penghapusan Data dapat dituliskan sebagai berikut:
Misalkan nilai data dengan id ingin dihapus, pernyataan SQL nya
dituliskan sebagai berikut:
Perhatikan juga, operasi penghapusan tanpa menyertakan klausa
WHERE akan mengakibatkan dihapusnya seluruh data di tabel. Jadi
jik anda hanya ingin menghapus data tertentu gunakan selalu
klausa WHERE.
d. Seleksi Data
Sintaks operasi seleksi atau pengambilan data dapat di tuliskan
sebagai berikut:
Misalkan ingin menampilkan data id dan nama jurusan, pernyataan
SQL-nya dapat di tuliskan sebagai berikut:
Sebagai alternatif, tersedia karakter asterik (*) yang
menyatakan seluruh field. Jadi, pernyataan di bawah iniekuivalen
dengan pernyataan di atas.
AGREGAT
1. Fungsi Agregat
Fungsi agregat (aggregate) adalah fungsi yang menerima koleksi
nilai dan mengembalikan nilai tunggal sebagai hasilnya. Standar
ISO mendefinisikan lima jenis fungsi agregat
"Fungsi "Deskripsi "
"COUNT "Mengembalikan jumlah (banyaknya atau "
" "kemunculannya) nilai di suatu kolom "
"SUM "Mengembalikan jumlah (total atau sum) nilai"
" "di suatu kolom "
"AVG "Mengembalikan rata-rata (average) nilai si "
" "suatu kolom "
"MIN "Mengembalikan nilai terkecil (minimal) di "
" "suatu kolom "
"MAX "Mengembalikan nilai terbesar (maximal) di "
" "suatu kolom "
2. Keyword DISTINCT
Keyword DISTINCT dapat dimanfaatkan untuk mengeliminasi
duplikasi kemunculan data yang sama.
SELECT DISTINCT A1, 12, ...., An
FROM r1, r2, r3, ...., rm
WHERE P
3. Pengelompokan
Operasi non-trival lainnya di dalam pengambilan data adalah
pengelompokan. Operasi ini direpresentasikan melalui klausa
GROUP BY dan diikuti nama field
Sintaks klausa GROUP BY diperlihatkan sebagai berikut:
SELECT AI, A2, ...., An
FROM r1, r2, r3, ...., rm
GROUP BY A1, A2, ...., An
Dalam implementasinya, klausa GROUP BY sering dikombinasikan
dengan fungsi – fungsi agreget untuk operasi-operasi spesifik.
4. Having
Pada saat bekerja dengan fungsi agregat, terkadang diperlukan
klausa WHERE untuk menspesifikasikan hasil. Sayangnya, klausa
WHERE tidak boleh mengandung fungsi agreget. Sebagai solusi,
kita bisa memanfaatkan klausa HAVING. Penggunaan klausa ini
mirip WHERE.
Sintaks klausa HAVING diperlihatkan sebagai berikut :
SELECT A1, COUNT(A1) FROM r
GROUP BY A1
HAVING P;
JOIN DAN UNION
1. Relationship
Relationship adalah suatu hubungan antara beberapa entitas.
Konsep ini sangat penting sekali di dalam basis data, di mana
memungkinkan entitas- entitas untuk saling berhubungan satu
sama lain.
Di dalam sebuah relationship, primary key memiliki peran
penting untuk mengaitkan entitas. Selain itu, primary key juga
digunakan untuk mendefinisikan batasan keterhubungan.
2. Join
Join merupakan salah satu konstruksi dasar dari SQL dan basis
data. Join dapat didefinisikan sebagai kombinasi record dari
dua atau lebih tabel di dalam basis data relasional dan
menghasilkan sebuah tabel (temporary) baru—yang disebut sebagai
joined table.
Join dapat diklasifikasikan ke dalam dua jenis, yaitu inner
join dan outer join.
a. Inner Join
Inner join pada dasarnya adalah menemukan persimpangan
(intersection) antara dua buah tabel.
Sintaks inner join diperlihatkan sebagai berikut:
SELECT A1, A2, ..., An
FROM r1
INNER JOIN r2
ON r1.join_key = r2.join_key
Inner join juga dapat direpresentasikan dalam bentuk implisit
sebagai berikut : SELECT A1, A2, ..., An
FROM r1, r2
WHERE r1.key = r2.key
Misalkan terdapat tabel A dan B, maka hasil inner join dapat
diperlihatkan—sebagai bidang terarsir—dalam diagram Venn
seperti Gambar 1.
Gambar 1. Inner Join
b. Outer Join
Outer join dibagi ke dalam tiga jenis, yaitu left outer join,
right outer join, dan full outer join.
Left Outer Join
Left outer join (atau left join) mengembalikan semua nilai dari
tabel kiri ditambah dengan nilai dari tabel kanan yang sesuai
(atau NULL jika tidak ada nilai yang sesuai).
Sintaks left outer join diperlihatkan sebagai berikut:
SELECT A1, A2, ..., An
FROM r1
LEFT OUTER JOIN r2
ON r1.join_key = r2.join_key
Left outer join antara tabel A dan B dapat diilustrasikan dalam
diagram Venn seperti Gambar 2.
Gambar 2. Left Outer Join
Right Outer Join
Right outer join (atau right join) pada dasarnya sama seperti
left join, namun dalam bentuk terbalik—kanan dan kiri.
Sintaks right outer join diperlihatkan sebagai berikut:
SELECT A1, A2, ..., An
FROM r1
RIGHT OUTER JOIN r2
ON r1.join_key = r2.join_key
Right outer join antara tabel A dan B dapat diilustrasikan
dalam diagram Venn seperti Gambar 3.
Gambar 3. Right Outer Join
Full Outer Join
Full outer join (atau full join) pada hakekatnya merupakan
kombinasi dari left dan right join.
Sintaks full outer join diperlihatkan sebagai berikut:
SELECT A1, A2, ..., An
FROM r1
FULL OUTER JOIN r2
ON r1.join_key = r2.join_key
Bentuk visual dari full outer join dapat diperlihatkan
menggunakan diagram Venn seperti Gambar 4.
Gambar 4. Full Outer Join
Selain empat jenis join yang utama di atas, masih ada beberapa
variasi join lainnya, seperti CROSS JOIN (cartesian product),
NATURAL JOIN, dan sebagainya.
Perlu juga diperhatikan, join bisa diimplementasikan dalam
bentuk bersarang (nested join). Jadi, di dalam sebuah operasi
join bisa terdapat operasi join lainnya.
3. Union
MySQL Union adalah statemen yang mengkombinasikan dua buah atau
lebih resultset dari beberapa table dengan statemen SELECT
sehingga menjadi satu buah resulset. Union Statemen memiliki
beberapa ketentuan sebagai berikut.
a. Jumlah kolom/field dari setiap statemen SELECT harus sama.
b. Tipe data kolom/field dari setiap statemen SELECT harus
kompatibel.
Secara default Statemen UNION akan menghapus semua record
duplikat dari resultset. Apabila Anda ingin record duplikat
tetap di tampilkan maka pada resultset tuliskan secara explisit
UNION ALL. Perbedaan Union dan Union All dapat dijelaskan pada
gambar diagram Venn 5 dan 6.
Gambar 5. Union
Ganbar 6. Union All
Fungsi Union sendiri dapat dijalankan dengan sintaks sebagai
berikut :
SELECT A1,A2, ...An
FROM r1 UNION
SELECT A1,A2, ...An
FROM r2;
SELECT A1,A2, ...An
FROM r1 UNION ALL
SELECT A1,A2, ...An
FROM r2;
SUBQUERY
1. Subquery
Subquery (disebut juga subselect atau nested select / query atau
inner- select) adalah query SELECT yang ada di dalam perintah
SQL lain misalnya SELECT, INSERT, UPDATE,atau DELETE.Keberadaan
subquery secara nyata mampu menyederhanakan persoalanpersoalan
rumit berkaitan query data. Sebagai contoh, misal terdapat
pernyataan sebagai berikut:
"Dapatkan data mahasiswa yang alamatnya sama dengan mahasiswa
dengan nim 104"
Secara normal, diperlukan dua tahapan untuk menyelesaikan kasus
di atas.Pertama adalah mendapatkan alamat dari mahasiswa yang
memiliki nim 104. Langkah selanjutnya, baru kita bisa mengetahui
data mahasiswa yang alamatnya sama dengan mahasiswa dengan nim
104.Adapun dengan memanfaatkan subquery, maka penyelesaian kasus
di atas hanya memerlukan sebuah query (akan dijelaskan nanti).
Pada hakekatnya, subquery sangat berguna ketika sebuah query
didasarkan pada nilai-nilai yang tak diketahui. Sintaks formal
subquery diperlihatkan sebagai berikut:
Subquery dapat diklasifikasikan ke dalam tiga jenis : scalar,
multiple-row, dan multiple column.
a. Scalar Subquery
Subquery baris tunggal (scalar) hanya mengembalikan hasil satu
baris data. Bentuk subquery ini diperlihatkan seperti Gambar 1.
Gambar 1 Scalar subquery
Subquery baris tunggal dapat menggunakan operator baris tunggal
=, >,>=, <, <=, atau <>.
b. Multiple-Row Subquery
Subquery baris ganda (multiple-row) mengembalikan lebih dari
satu baris data. Bentuk subquery ini diperlihatkan seperti
Gambar 2.
Gambar 2 Multiple-row subquery
Subquery baris ganda dapat menggunakan operator komparasi IN,
ANY /SOME, atau ALL.
c. Multiple-Column Subquery
Subquery kolom ganda (multiple-column) mengembalikan lebih dari
satu baris dan satu kolom data. Bentuk subquery ini
diperlihatkan seperti Gambar 3.
Gambar 3 Multiple-column subquery
A. View
View dapat didefinisikan sebagai tabel maya (virtual) atau
logical yang terdiri dari himpunan hasil query. Tidak seperti
umumnya tabel di dalam basis data relasional, view bukanlah
bagian dari skema fisik. View bersifat dinamis, ia mengandung
data dari tabel yang direpresentasikannya. Dengan demikian,
ketika tabel yang menjadi sumber datanya berubah, data di view
juga akan berubah.
Merujuk pada dokumentasi MySQL, sintaks pendefinisian view
diperlihatkan sebagai berikut:
B. Updatable View
View dapat berisi read-only atau updatable. Kondisi ini sangat
dipengaruhi oleh adanya pendefinisian view itu sendiri.
Bagaimanapun, untuk menciptakan updatable view, pernyataan
SELECT yang didefinisikan di view harus mengikuti aturan-aturan
sebagai berikut :
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.
TRIGGER
1. Trigger
Trigger dapat didefinisikan sebagai himpunan kode (prosedur)
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. Trigger baris
(row) mendefenisikan aksi untuk setiap baris tabel : trigger
pernyataan 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
mempresentasikan waktu eksekusi trigger-misalnya sebelum ataukah
sesudah pernyataan-pernyataan yang berkorespondensi.
Adakalanya trigger dipandang sebagai bentuk spesifik dari
stored procedure (terkait pendefenisian body). Bagaimanapun,
trigger akan dipanggil (secara otomatis) ketika event terjadi,
sedangkan stored procedure harus dipanggil secara eksplisit.
2. Trigger MySQL
MySQL mendukung fitur trigger termasuk juga stored procedure
dan view sejak versi 5.0.2. sebagaimana objek-objek lainnya,
trigger diciptakan menggunakan pernyataan CREATE.
Sintaks pendefenisian trigger diperlihatkan sebagai berikut :
CREATE
[DEFINER = { user " CURRENT_USER }]
TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt
MySQL tidak mengizinkan multiple trigger dengan waktu aksi
dan event sama per tabel. Misalkan di tabel A sudah
didefenisikan trigger AFTER INSERT lagi; namun AFTER EDIT, AFTER
DELETE, atau BEFORE (INSERT, EDIT, dan DELETE) bisa diterima.
STORED PROCEDURE
Stored procedure adalah sebuah prosedur-layaknya subprogram
(subrutin) di dalam bahasa pemprograman reguler-yang tersimpan
di dalam katalog basis data.
Beberapa kelebihan yang ditawarkan stored procedure antara lain:
meningkatkan performa, mereduksi trafik jaringan, reusable, dan
meningkatkan kontrol sekuriti.
Di balik kelebihan-kelebihannya, stored procedure juga memiliki
kekurangan, di antaranya: berpotensi meningkatkan beban server
dan penulisnya tidak mudah (memerlukan pengetahuan spesifik).
Sintaks stored procedure diperlihatkan sebagai berikut:
CREATE PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body
Untuk memanggil stored procedure, digunakan perintah CALL
(beberapa DBMS ada yang menggunakan EXECUTE).
CALL sp_name
Dalam implementasi nyata, penggunaan stored procedure sering
melibatkan parameter. Di MySQL, parameter stored procedure
dibedakan menjadi tiga mode: IN, OUT, dan INOUT.
IN
Parameter yang merupakan mode default ini mengindikasikan bahwa
sebuah parameter dapat di-pass ke stored procedure tetapi
nilainya tidak dapat diubah (dari dalam stored procedure).
OUT
Mode ini mengindikasikan bahwa stored procedure dapat mengubah
parameter dan mengirimkan kembali ke program pemanggil.
INOUT
Mode ini pada dasarnya merupakan kombinasi dari mode IN dan OUT.
Sintaks pendefinisian parameter diperlihatkan sebagai berikut :
MODE param_name param_type(param_size)
Stored procedure dapat mencerminan beragam operasi data,
misalnya seleksi, penambahan, pengubahan, penghapusan, dan juga
operasi-operasi DDL.
Seperti halnya prosedure di bahasa pemrograman, stored procedure
juga dapat melibatkan variabel, pernyataan kondisional, dan
pengulangan.
TRANSACTION
1. Transaksi Basis Data
Pada suatu hari, Tono ingin mentransfer uang ke rekening
adiknya, Tini, sebesar Rp. 9.000.000. Diilustrasikan secara
sederhana, proses yang terjadi adalah sebagai berikut:
1) Saldo Tono dikurangi sebesar Rp. 9.000.000,
2) Saldo Tini ditambah sebesar Rp. 9.000.000.
Begitu kedua tahap di atas terlaksana dengan baik, Tono
akan merasa lega, dan Tini pun bersuka cita, karena sebentar
lagi dapat memiliki laptop baru yang telah lama dimimpikannya.
Namun, pertimbangkan jika di antara langkah (1) dan (2) terjadi
hal-hal buruk yang tidak diinginkan, misalnya saja mesin ATM
crash, terjadi pemadaman listrik dan UPS gagal up, disk pada
server penuh, atau ada cracker yang merusak infrastruktur
jaringan. Maka dapat dipastikan bahwa saldo Tono berkurang,
tetapi saldo Tini tidak bertambah. Hal tersebut merupakan
sesuatu yang tidak diharapkan untuk terjadi.
Dari ilustrasi di atas, maka dapat disimpulkan bahwa solusi
yang tepat adalah memperlakukan perintah-perintah sebagai satu
kesatuan operasi. Sederhananya, lakukan semua operasi atau tidak
sama sekali, biasa juga dikenal dengan jargon all or nothing .
Uniknya, konsep penyelesaian di atas sudah dikemukakan oleh para
ahli sejak puluhan tahun silam. Konsep yang disebut transaksi
basis data (database transaction) ini sebenarnya cukup
sederhana, antara lain:
Tandai bagian awal dan akhir himpunan perintah,
Putuskan di bagian akhir untuk mengeksekusi (commit)
atau membatalkan (rollback) semua perintah.
2. Properti Transaksi Basis Data
Dalam transaksi basis data, terdapat properti-properti yang
menjamin bahwa transaksi dilaksanakan dengan baik. Properti-
properti ini dikenal sebagai ACID (Atomicity, Consistency,
Isolation, Durability ).
Atomicity
Transaksi dilakukan sekali dan sifatnya atomic, artinya
merupakan satu kesatuan tunggal yang tidak dapat dipisah, baik
itu pekerjaan yang dilaksanakan secara keseluruhan, ataupun
tidak satupun.
Consistency
Jika basis data pada awalnya dalam keadaan konsisten, maka
pelaksanaan transaksi dengan sendirinya juga harus meninggalkan
basis data tetap dalam status konsisten.
Isolation
Isolasi memastikan bahwa secara bersamaan (konkuren) eksekusi
transaksi terisolasi dari yang lain.
Durability
Begitu transaksi telah dilaksanakan (di-commit), maka perubahan
yang diakibatkan tidak akan hilang atau tahan lama (durable),
sekalipun terdapat kegagalan sistem.
Pada transaksi terdapat dua buah operasi yang berfungsi
untuk menjaga integritas data dan ketahanan datayaitu COMMIT dan
ROLLBACK.
COMMIT berfungsi untuk menandakan bahwa transaksi telah selesai
dilaksanakan .
ROLLBACK berfungsi untuk memberi tahu bahwa transaki harus
diulang karena ada suatu kegagalan.
D. Struktur Data Database
Dalam perancangan database PT BORWITA … ini terdapat 10 buah tabel
yaitu tabel pembelian, barang, jadwal_kirim, target_seles,
target_supervisior , gaji_seles, gaji_supervisior, toko, seles dan
supervisior.
Dalam tabel pembelian terdapat 5 buah field yaitu ID_BELI, ID_BARANG,
JUMLAH, TOTAL, dan ID_TOKO. Primary key yang digunakan adalah ID_BELI.
Struktur tabel pembelian tersebut adalah sebagai berikut :
Gambar 1: Struktur tabel PEMBELIAN
Table barang terdiri 4 buah field yaitu NAMA_BARANG, ID_BARANG,
HARGA dan STOK. ID_BARANG digunakan sebagai primary key . Berikut adalah
struktur table dari table barang.
Gambar 2: Struktur tabel BARANG
Table jadwal_kirim terdiri 5 buah field yaitu JADWAL, ID_KIRIM,
ID_BELI, ID_SELES dan WILAYAH. ID_KIRIM digunakan sebagai primary key .
Berikut adalah struktur table dari table jadwal_kirim.
Gambar 3: Struktur tabel JADWAL_KIRIM
Table target_seles terdiri 4 buah field yaitu ID_TARGET_SELES,
ID_SELES, BULAN_TAHUN, dan TARGET_PENDAPATAN. ID_TARGET_SELES digunakan
sebagai primary key . Berikut adalah struktur table dari table
target_seles.
Gambar 4: Struktur tabel TARGET_SELES
Table target_supervisior terdiri 4 buah field yaitu
ID_TARGET_SUPERVISIOR, ID_SPERVISIOR, BULAN_TAHUN, dan TARGET_PENDAPATAN.
ID_TARGET_SUPERVISIOR digunakan sebagai primary key .
Berikut adalah struktur table dari table target_supervisior.
Gambar 5: Struktur tabel TARGET_SUPERVISIOR
Table gaji_supervisior terdiri 3 buah field yaitu ID_GAJI_SUPERVISIOR,
ID_SUPERVISIOR, dan GAJI. ID_GAJI_SUPERVISIOR digunakan sebagai primary
key . Berikut adalah struktur table dari table gaji_supervisior.
Gambar 6: Struktur tabel GAJI_SUPERVISIOR
Table gaji_seles terdiri 3 buah field yaitu ID_GAJI_SELES, ID_SELES,
dan GAJI. ID_GAJI_SELES digunakan sebagai primary key . Berikut adalah
struktur table dari table gaji_seles
Gambar 7: Struktur tabel GAJI_SELES
Table toko terdiri 4 buah field yaitu ID_TOKO, NAMA_TOKO, ALAMAT dan
CP. ID_TOKO digunakan sebagai primary key . Berikut adalah struktur table
dari table toko.
Gambar 8: Struktur tabel TOKO
Table supervisior terdiri 5 buah field yaitu ID_SUPERVISIOR, NAMA,
ALAMAT, WILAYAH dan TARGET_GAJI_SUPERVISIOR. ID_SUPERVISIOR digunakan
sebagai primary key . Berikut adalah struktur table dari table supervisior.
Gambar 9: Struktur tabel SUPERVISIOR
Table seles terdiri 5 buah field yaitu ID_SELES, NAMA, ALAMAT,
WILAYAH dan TARGET_GAJI_SELES. ID_SELES digunakan sebagai primary key .
Berikut adalah struktur table dari table seles.
Gambar 10: Struktur tabel SELES
Normalisasi untuk program ini bermula dengan penggunaan atau pembuatan
table wilayah yang terdiri dari empat buah field yaitu id_wilayah, wilayah,
gaji_seles dan juga gaji_supervisior.
Gambar 11: Struktur tabel WILAYAH
Table jadwal_kirim yang semula terdiri dari 4 buah field yaitu jadwal,
id_kirim, id_beli, id_seles dan juga wilayah. Setelah mengalami normalisasi
table tersebut mengalami pengurangan jumlah field menjadi jadwal, id_kirim,
id_beli dan id_seles.
Gambar 12: Struktur tabel NORMALISASI JADWAL_KIRIM
Table seles semula terdiri dari lima buah field yaitu id_seles, nama,
alamat, wilayah, dan TARGET_GAJI_SELES. Setelah mengalami normalisasi
table ini mengalami perubahan field dan juga nilai serta mengalami
pengurangan field.
Gambar 13: Struktur tabel NORMALISASI SELES
Table supervisior semula terdiri dari lima buah field yaitu id_seles,
nama, alamat, wilayah, dan TARGET_GAJI_SUPERVISIOR. Setelah mengalami
normalisasi table ini mengalami perubahan field dan juga nilai serta
mengalami pengurangan field.
Gambar 14: Struktur tabel NORMALISASI SUPERVISIOR
Sehingga struktur dari database PT BORWITA CITRA PRIMA diperlihatkan
seperti gambar di bawah ini:
Gambar 15: Struktur database PT BORWITA
Struktur Database PT BORWITA
Relasi dari sepuluh tabel pada database ini yang terdiri dari table
pembelian, barang, , jadwal_kirim, target_seles, target_supervisior,
gaji_seles, gaji_supervisior, supervisior, wilayah dan 1seles. Dari semua
table tersebut dapat buat hubungan atau relasi seperti gambar dibawah ini:
Gambar 16: Relasi tabel pada database PT BORWITA
Dari diagram relationship tersebut, dapat diketahui bahwa setiap tabel
memiliki relasi dengan tabel yang lain. Cara merelasikannya adalah dengan
menghubungkan field yang merupakan Primary key dengan field dari tabel lain
yang bukan Primary Key.
Primary key ditunjukkan dengan kunci berwarna kuning. Nilai dari
Primary Key adalah unique, artinya nilai dari primary key tersebut tidak
ada yang sama.
E. Implementasi Database
Basis data atau database pada program ini dapat dibuat berdasarkan
langkah – langkah dibawah ini :
a. Langkah pertama yang dilakukan dalam proses pembuatan database ini
adalah pembuatan table. Table yang digunakan sebanyak 11 table dimana
salah satu table dari kesebelas table tersebut berfungsi sebagai
table normalisasi dari program tersebut. Berikut adalah proses
pembuatan table pada program database PT BORWITA. Dalam hal ini
urutan dalam pembuatan table tidaklah penting.
Langkah pertama adalah membuat table dengan nama barang yang
kemudian akan diisi dengan data-data yang telah diperoleh dari
peninjauan lapangan.
create table barang (
NAMA_BARANG char(100) not null,
ID_BARANG int(50) not null,
HARGA int(100) not null,
STOK int(50) not null,
primary key(id_barang)
) ENGINE=InnoDB;
insert into barang
values
("PERMEN",1011,1000,1000),
("TAS",1101,350000,200),
("BEDAK",1110,40000,100),
("KERTAS",1111,35000,150),
("ROTI",1320,5000,5000),
("AIR MINERAL",1511,10000,500),
("GUNTING",3421,7500,350),
("BOLPEN",5767,2500,500),
("PENSIL",6534,3000,100),
("PENGHAPUS",6767,6500,200),
("PENGGARIS",9999,1500,500);
Gambar 17: data table BARANG
Table kedua yang akan dibuat pada program ini adalah table
pembelian. Table ini mempunyai lima buah field yang terdiri dari
id_beli yang diberoleh oleh seorang konsumen ketika melakukkan
pembelian. Id_barang dalah id yang diperoleh dari barang yang
telah dibeli. Jumlah adalah benyaknya barang yang dibeli oleh
seorang konsumen. Total adalah stok atau jumlah barang yang
dimiliki oleh seles. Dan id_toko adalah kode yang dimiliki oleh
kode yang melakukan pembelian. Berikut adalah perintah pembuatan
dan juga pengisian data untuk menyusun table pembelian.
CREATE TABLE PEMBELIAN(
ID_BELI INT(20),
ID_BARANG INT(10),
JUMLAH INT(30),
TOTAL INT (50),
ID_TOKO INT(50),
PRIMARY KEY(ID_BELI)
)ENGINE=InnoDB ;
INSERT INTO PEMBELIAN
VALUES
(001,1511,78,500,50),
(002,6534,33,100,30),
(003,1011,90,1000,20),
(004,1101,89,200,60),
(005,1320,1000,5000,80),
(006,9999,80,500,81),
(007,3421,45,350,45),
(008,6767,45,200,47),
(009,5767,30,500,56),
(010,1110,50,100,78),
(011,1111,190,150,100);
Gambar 18: data table PEMBELIAN
Table ketiga adalah table table jadwal kirim. Table ini
merupakan table yang telah mengalami proses normalisasi. Semula
table ini terdiri dari lima buah field yang masing-masing field
mempunyai fungsi masing-masing. Kemudian table ini mengalami
pengurangan field menjadi empat buah dengan penghilangan field
wilayah. Field jadwal pada table ini berfungsi untuk mengetahui
jadwal dari masing-masing seles yang telah ditetapkan oleh
seorang supervisior dari suatu wilayah yang sama dengan wilayah
dari seles itu sendiri. Id_kirim merupakan subuah id yang dapat
digunakan ketika seorang seles ingin melihan jadwal kirim mereka
pada suatu system basis data yang ada pada suatu perusahaan.
Id_beli merupakan id yang mengindikasikan lokasi dari tempat
yang akan dituju oleh seles. Id_Seles mengindikasikan seles yang
akan melakukan pengiriman barang tersebut. Berikut adalah data
yang menyusun table ini.
create table jadwal_kirim(
JADWAL CHAR(20),
ID_KIRIM INT(40),
ID_BELI INT(40),
ID_SELES INT(40),
WILAYAH CHAR(40),
PRIMARY KEY(ID_KIRIM)
)ENGINE=InnoDB;
insert into jadwal_kirim
values
("15/04/2016",98765,1,1106,"SURABAYA"),
("20/04/2016",97869,2,2345,"JEMBER"),
("15/04/2016",99987,3,2346,"MALANG"),
("17/04/2016",99999,4,3456,"SURABAYA"),
("21/04/2016",97777,5,3489,"SURABAYA"),
("21/04/2016",98777,6,4567,"PANDAAN"),
("18/04/2016",99876,7,4568,"JOMBANG"),
("18/04/2016",96785,8,5689,"PANDAAN"),
("19/04/2016",98769,9,7853,"JOMBANG"),
("16/04/2016",96659,10,7856,"JOMBANG"),
("20/04/2016",97785,11,8900,"SIDOARJO");
Gambar 19: data table JADWAL_KIRIM
Gambar 20: data table normalisasi JADWAL_KIRIM
Table keempat adalah table tentang target_seles. Table ini
berisi id_target_seles yang berfungsi sebagai kode akses ketika
pegawai atu seles ingin mengakses data yang terdapat pada
database perusahaan. Id_seles merupakan id yang akan digunakan
untuk mengindikasikan nama seles ketika mengakses data yang ada
pada table target_seles. Bulan_tahun adalah field yang mempunyai
fungsi sebagai batas akhir dari seorang seles untuk menghasilkan
pendapatan sebesar-besarnya. Field target_pendapatan adalah
besar pendapatan minimal yang harus didapatkan oleh seorang
seles.
CREATE TABLE TARGET_SELES(
ID_TARGET_SELES INT(50),
ID_SELES INT(50),
BULAN_TAHUN CHAR(50),
TARGET_PENDAPATAN INT(50),
PRIMARY KEY(ID_TARGET_SELES)
)ENGINE=InnoDB;
insert into target_seles
values
(89567,1106,"30/04/2016",6000000),
(86768,2345,"30/04/2016",5500000),
(89673,2346,"30/04/2016",5000000),
(85678,3456,"30/04/2016",5000000),
(89576,3489,"30/04/2016",4500000),
(83562,4567,"30/04/2016",6000000),
(83564,4568,"30/04/2016",6000000),
(81236,5689,"30/04/2016",4500000),
(88888,7853,"30/04/2016",5000000),
(88997,7865,"30/04/2016",4500000),
(88896,8900,"30/04/2016",6000000);
Gambar 21: data table TARGET_SELES
Table kelima adalah table tentang target_supervisior. Table ini
berisi id_target_supervisior yang berfungsi sebagai kode akses
ketika pegawai atau supervisior ingin mengakses data yang
terdapat pada database perusahaan. Id_supervisior merupakan id
yang akan digunakan untuk mengindikasikan nama supervisior
ketika mengakses data yang ada pada table target_supervisior.
Bulan_tahun adalah field yang mempunyai fungsi sebagai batas
akhir dari seorang supervisior untuk menerima pendapatan sebesar-
besarnya yang diperoleh dari seles sebagai anak buah. Field
target_pendapatan adalah besar pendapatan minimal yang harus
didapatkan oleh seorang ssupervisior yang diperoleh dari seles.
CREATE TABLE TARGET_SUPERVISIOR(
ID_TARGET_SUPERVISIOR INT(50),
ID_SUPERVISIOR INT(50),
BULAN_TAHUN CHAR(50),
TARGET_PENDAPATAN INT(50),
PRIMARY KEY(ID_TARGET_SUPERVISIOR)
)ENGINE=InnoDB;
insert into target_sUPERVISIOR
values
(845,102,"02/05/2016",14000000),
(897,123,"02/05/2016",14500000),
(834,134,"02/05/2016",15000000),
(856,135,"02/05/2016",14000000),
(895,145,"02/05/2016",16000000),
(835,167,"02/05/2016",14000000);
Gambar 22: data table TARGET_SUPERVISIOR
Table keenam adalah tabe yang berisi mengenai data yang
berkaitan tentang id_gaji_seles, id_seles dan juga gaji. Masing-
masing field berisi data yang mempunyai fungsi masing-masing
ketika telah di terapkan dalam program database.
CREATE TABLE GAJI_SELES(
ID_GAJI_SELES INT(50),
ID_SELES INT(50),
GAJI INT(50),
PRIMARY KEY(ID_GAJI_SELES)
)ENGINE=InnoDB;
insert into GAJI_seles
values
(551,1106,5000000),
(552,2345,4500000),
(553,2346,4000000),
(554,3456,4000000),
(555,3489,3500000),
(556,4567,5000000),
(557,4568,5000000),
(558,5689,3500000),
(559,7853,4000000),
(560,7865,3500000),
(561,8900,5000000);
Gambar 23: data table GAJI_SELES
Table ketujuh adalah table gaji_supervisior. Table ini akan
mempunyai tiga buah field yang terdiri dari id_gaji_supervisior,
id_supervisior dan juga gaji. Dari ketia buah field diatas,
field yang paling penting adalah field id_gaji_supervisior karea
dengan menggunakan id tersebut seorang supervisior dalam
melakukan pengaksesan pada program database yang telah dibuat.
Dibawah ini adalah perintah beserta data yang digunakan dalam
pengisian table tersebut.
CREATE TABLE GAJI_Supervisior(
ID_GAJI_Supervisior INT(50),
ID_Supervisior INT(50),
GAJI INT(50),
PRIMARY KEY(ID_GAJI_superior)
)ENGINE=InnoDB;
insert into GAJI_Supervisior
values
(034,102,12000000),
(035,123,12000000),
(036,134,12000000),
(037,135,12000000),
(038,145,12000000),
(039,167,12000000);
Gambar 24: data table GAJI_SUPERVISIOR
Table kedelapan adalah table toko. Table ini mempunyai empat
buah field yaitu id_toko, nama_toko, alamat, cp. Semua data yang
terdapat pada table ini mempunyai nilai yang sangat mempengaruhi
karena masing-masing field saling berhubungan dan mempengaruhi.
Berikut adalah perintah dan data yang akan dimasukkan atau di
inputkan dalam table ini.
CREATE TABLE TOKO(
ID_TOKO INT(50),
NAMA_TOKO CHAR(50),
ALAMAT VARCHAR(100),
CP VARCHAR(20),
PRIMARY KEY(ID_TOKO)
)ENGINE=InnoDB;
INSERT INTO TOKO
VALUES
(121,"SEJAHTERA","JL.ANGGREK NO.56 SURABAYA","085234567890"),
(190,"MAJU","JL.MELATI NO.2 JEMBER","088765234123"),
(130,"JASA","JL.KENANGA NO.6 JOMBANG","089765421234"),
(320,"BARU","JL.CIMAHI NO.8 JOMBANG","087756113456"),
(890,"POJOK","JL.MARZUKI NO.10 PANDAAN","085787612345"),
(670,"JAYA","JL.A.YANI NO.119 SURABAYA","086123456789"),
(506,"MINI",JL.SUPRIADI NO.78 SURABAYA","081234567890"),
(780,"SAM","JL.CIAMIS NO.65 PANDAAN","085234567543"),
(670,"LANCAR","JL.VETERAN NO.89 JOMBANG","087654987123"),
(310,"MUNCUL","JL.BENDUNGAN SUTAMI NO.67
MALANG","087756434300"),
(540,"TOKA","JL.KRISNA NO 11 SIDOARJO","087756897651");
Gambar 25: data table TOKO
Table kesembilan adalah table seles. Table ini mempunyai lima
buah field yang meliputi id_Seles, nama, alamat, wilayah, dan
juga target_gaji. Masing-masing dari field yang ada pada table
ini mempunyai fungsi yang khusus. Proses normalisasi yang
terjadi pada program juga elibatkan data yang ada pada table
ini. Field yang semula berjumlah lima buah mengalami
pengurangan menjadi 4 buah dengan menghapus field target_gaji
dna mengubahan data yang terdapat pada wilayah dengan id_wilayah
yang mempunyai tipe data int. berikut perintah dan juga data
yang digunakan pada table ini.
Perintah sebelum normalisasi
CREATE TABLE Seles(
ID_Seles INT(50),
NAMA CHAR(50),
ALAMAT VARCHAR(50),
WILAYAH INT(50),
TARGET_GAJI_Seles INT(50),
PRIMARY KEY(ID_Seles)
)ENGINE=InnoDB;
INSERT INTO Seles
VALUES
(1106,"ANDI","JL.CILANDAK NO.9","SURABAYA",6000000),
(2345,"TIKO","JL.MERDEKA NO.11","JEMBER",4500000),
(2346,"ERZI","JL.JAKARTA NO.97","MALANG",4500000),
(3456,"YONI","JL.CIBUBUR NO 98","SURABAYA",6000000),
(3489,"ERZA","JL.CIBUBUR NO.1","SURABAYA",6000000),
(4567,"YONO","JL.KUNINGAN NO.20","PANDAAN",5500000),
(4568,"REZA","JL.A.YANI NO.121","JOMBANG",4500000),
(5689,"TINO","JL.SOEHARTO NO.15","PANDAAN",5500000),
(7853,"MIRZA","JL.SOEKARNO HATTA NO.5","JOMBANG",4500000),
(7865,"KOKO","JL.SOEKARNO HATTA NO.9","JOMBANG",4500000),
(8900,"CIKO","JL.MELATI NO.17","SIDOARJO",5750000);
Gambar 26: data table SELES
Perintah setelah normalisasi
CREATE TABLE Seles(
ID_Seles INT(50),
NAMA CHAR(50),
ALAMAT VARCHAR(50),
ID_WILAYAH INT(50),
PRIMARY KEY(ID_Seles)
)ENGINE=InnoDB;
INSERT INTO Seles
VALUES
(1106,"ANDI","JL.CILANDAK NO.9",55),
(2345,"TIKO","JL.MERDEKA NO.11",111),
(2346,"ERZI","JL.JAKARTA NO.97",77),
(3456,"YONI","JL.CIBUBUR NO 98",55),
(3489,"ERZA","JL.CIBUBUR NO.1",55),
(4567,"YONO","JL.KUNINGAN NO.20",66),
(4568,"REZA","JL.A.YANI NO.121",99),
(5689,"TINO","JL.SOEHARTO NO.15",66),
(7853,"MIRZA","JL.SOEKARNO HATTA NO.5",99),
(7865,"KOKO","JL.SOEKARNO HATTA NO.9",99),
(8900,"CIKO","JL.MELATI NO.17",88);
Gambar 27: data table normalisasi SELES
Table sepuluh adalah table supervisior. Table ini juga masuk
dalam table yang akan dinormalisasi. Dengan melakukan hal yang
sam dengan normalisasi pada table seles. Berikut adalah perintah
yang digunakan dalam pembuatan table ini.
Perintah sebelum normalisasi
CREATE TABLE SUPERVISIOR(
ID_SUPERVISIOR INT(50),
NAMA CHAR(50),
ALAMAT CHAR(50),
WILAYAH INT(50),
TARGET_GAJI_SUPERVISIOR INT(50),
PRIMARY KEY(ID_SUPERVISIOR)
)ENGINE=InnoDB;
INSERT INTO SUPERVISIOR
VALUES
(102,"JL.KALPATARU","MALANG",140000000),
(123,"JL.BALI","SIDOARJO",145000000),
(134,"JL.JAKARTA","PANDAAN",150000000),
(135,"JL.KALIMANTAN","JOMBANG",140000000),
(145,"JL.CIBUBUR","SURABAYA",160000000),
(167,"JL.MALIOBORO","JEMBER",140000000);
Gambar 28: data table SUPERVISIOR
Perintah sesudah normalisasi
CREATE TABLE SUPERVISIOR(
ID_SUPERVISIOR INT(50),
NAMA CHAR(50),
ALAMAT CHAR(50),
id_WILAYAH INT(50),
PRIMARY KEY(ID_SUPERVISIOR)
)ENGINE=InnoDB;
INSERT INTO SUPERVISIOR
VALUES
(102,"JL.KALPATARU",77),
(123,"JL.BALI",88),
(134,"JL.JAKARTA",66),
(135,"JL.KALIMANTAN",99),
(145,"JL.CIBUBUR",55),
(167,"JL.MALIOBORO",111);
Gambar 29: data table normalisasi SUPERVISIOR
Dan table terakhir adalah table yang menyebabkan terjadinya
normalisasi yaitu table wilayah. Semua field-field yang
mengalami perubahan bahkan penghapusan semua dipindahkan pada
table ini. Contohnya saja field wilayah yang ada pada tanble
jadwal_kirim ditambahkan pada table wilayah. Kemudian menggunaan
id_wilayah yang sebelumnya wilayah juga masuk pada table ini dan
target gaji seles dan juga supervisior yang terdapat pada table
seles dan juga supervisior juga masuk pada table wilayah ini.
Jadi, table wilayah akan berisi field yaitu id_wilayah, wilayah,
target_gaji_seles dan juga target_gaji_supervisior. Berikut
adalah perintah yang digunakan untuk membuat table ini.
create table wilayah(
ID_WILAYAH int(20),
WILAYAH char(20),
GAJI_SELES int(10),
GAJI_SUPERVISIOR INT (10),
PRIMARY KEY (ID_WILAYAH))
ENGINE=InnoDB;
insert into wilayah
values
(55,"SURABAYA",6000000,16000000),
(66,"PANDAAN",5500000,15000000),
(77,"MALANG",4500000,14000000),
(88,"SIDOARJO",5750000,14500000),
(99,"JOMBANG",4500000,14000000),
(111,"JEMBER",4500000,14000000);
Gambar 30: data table normalisasi WILAYAH
F. Tampilan Berdasarkan Localhost
a. Struktur Table
Gambar 31: data table BARANG
Gambar 32: data table GAJI_SELES
Gambar 33: data table GAJI_SUPERVISIOR
Gambar 34: data table normalisasi JADWAL_KIRIM
Gambar 35: data table JADWAL
Gambar 36: data table normalisasi SELES
Gambar 37: data table SELES
Gambar 38: data table normalisasi SUPERVISIOR
Gambar 39: data table PEMBELIAN
Gambar 40: data table TARGET_SUPERVISIOR
Gambar 41: data table TARGET_SELES
Gambar 42: data table TOKO
\
Gambar 43: data table normalisasi WILAYAH
b. Data Table
Gambar 44: data table BARANG
Gambar 45: data table GAJI_SELES
Gambar 46: data table GAJI_SUPERVISIOR
Gambar 47: data table JADWAL_KIRIM
Gambar 48: data table normalisasi JADWAL_KIRIM
Gambar 49: data table SELES
Gambar 50: data table normalisasi SELES
Gambar 51: data table SUPERVISIOR
Gambar 52: data table normalisasi SUPERVISIOR
Gambar 53: data table PEMBELIAN
Gambar 54: data table TARGET_SELES
Gambar 55: data table TARGET_SUPERVISIOR
Gambar 56: data table TOKO
Gambar 57: data table normalisasi WILAYAH
G. Studi Kasus
1. Studi Kasus 1
Kasus pertama yang digunakan dalam program ini berfungsi utnuk
melakukan fungsi penghitungan target pendapatan rata-rata yang
diperoleh oleh setiap seles. Untuk mendapatkan hasil tersebut
digunakan fungsi agregat rata-rata atau AVG.
a. Kode Program
select avg(GAJI)
as TARGET_PENDAPATAN from GAJI_SELES;
b. Screenshot Hasil
c. Penjelasan
Perintah diatas berfungsi untuk melakukan penghitungan
pendapatan rata-rata seorang seles yang diperoleh dari fungsi
agregat rata-rata atau AVG. Karena pendapat yang diperoleh oleh
setiap seles sangat mempengaruhi gaji dari supervisior dan juga
gaji seles maka penghitungan pendapatan rata-rata dari seles
sangatlah penting.
2. Studi Kasus 2
Apabila suatu perusahan ingin mendapatkan keuntungan yang besar.
Bagaimana cara atau metode agar perusahan tersebut memperoleh keuntungan
yang lebih besar. Cara atau metode yang digunakan untuk menyelesaikan kasus
ini didasarkan pada data- data yang telah dimiliki oleh suatu perusahaan.
a. Kode Program
select sum(target_pendapatan) as JUMLAH_PENDAPATAN
from target_supervisior;
b. Screenshot Hasil
c. Penjelasan
Perintah diatas merupakan perintah yang masuk dalam fungsi
agregat. Fungsi agregat yang digunakan dalam program ini adalah
sum. Fungsi sum berfungsi untuk melakukan menghitungan data yang
terdapat pada suatu field dari table tertentu. Dalam kasus ini
fungsi sum digunakan unruk melakukan penghitungan data yang
terdapat pada table target_supervisior field target_penghasilan.
Dengan menggunakan cara seperti ini maka suatu perusahaan akan
mempunyai patokan atau pedoman jumlah minimal pendapatan yang harus
dipenuhi oleh pegawai dari perusahaan tersebut agar perusahan dapat
memperoleh keuntungan yang sebesar-besarnya.
3. Studi Kasus 3
Apabila suatu perusahan ingin mengetahui berapa banyak jumlah
barang yang masih dimiliki oleh masing-masing seles dari masing-masing
wilayah. Kemudian, bagaimana pola konsumsi konsumen dilihat dari
pembelian barang dari konsumen. Dalam kasus ini perusahaan
menginginkan table yang berisikan data mengenai nama barang yang
diminati oleh konsumen, jumlah pembelian dan juga stok barang yang
dimiliki oleh masing-masing seles.
a. Kode Program
SELECT BARANG. NAMA_BARANG, BARANG.STOK, PEMBELIAN.JUMLAH
FROM BARANG INNER JOIN
PEMBELIAN ON
BARANG.ID_BARANG=PEMBELIAN.ID_BARANG;
b. Screenshot Hasil
c. Penjelasan
Data pada table diatas diperoleh dari melakuan inner join
antara dua buah table yaitu table barang dan juga table pembelian.
Tujuan dilakukan operasi ini adalah untuk mendapatkan hasil
mengenai nama barang yang dibeli oleh pelanggan atau customer,
jumlah barang yang dibeli dan juga stok barang yang dimiliki oleh
masing-masing seles. Untuk memperoleh table diatas digunakn
perintah sebagi berikut.
SELECT BARANG. NAMA_BARANG, BARANG.STOK, PEMBELIAN.JUMLAH
FROM BARANG INNER JOIN
PEMBELIAN ON
BARANG.ID_BARANG=PEMBELIAN.ID_BARANG;
Perintah diatas mempunyai pengertian bahwa program akn menampilkan
data nama_barang yang terdapat pada table barang, stok dari table
barang dan juga jumlah yang terdapat pada table pembelian.
Untuk itu digunakan fungsi inner join sebagai penghubung dari table-
table tersebut. Fungsi join pada operasi ini dapat berjalan apabila
data dari masing-masing table terdapat kesamaan, dan untuk kasus
ini data yang sama terdapat pada field id_barang.
4. Studi Kasus 4
Apabila seorang seles dari PT. BORWITA ingin melakukan
kunjungan ke rumah Supervisir yang dikarenakan ada kepentingan
tertentu. Tetapi, pada saat itu seles yang menjadi bawah ada
supervisior tersebut tidak mengetahui alamat rumah dari supervisior
tersebut dan yang tersebt ingat hanyalah penggalan kata dari nama
jalan tempat tinggal supervisior.
a. Kode Program
SELECT supervisior.nama,supervisior.alamat,
seles.nama, seles.alamat from supervisior
left outer join seles
on supervisior.ID_wilayah=seles.ID_wilayah
where supervisior.ALAMAT like "%LI%";
b. Screenshot Hasil
c. Penjelasan
Operasi diatas berfungsi untuk menampilkan data yang diperoleh
dari table supervisior dan juga table seles. Data – data tersebut
meliputi field nama dan alamat yang terdapat pada table supervisior
serta field nama dan alamat yang terdapat pada table seles.
Berdasarkan kasus diatas table tersebut akan diperoleh dengan
menggunakan operasi left outer join pada table seles dengan
id_wilayah yang ada pada kedua table sama. Operasi yang terjadi
pada table seles dan table supervisior menggunakan kondisi dimana
alamat yang terdapat pada table supervisior mengandung kata LI.
5. Studi Kasus 5
Apabila seorang pembeli ingin mengetahui jadwal pengiriman
barang dari seorang seles karena persediaan barang yang ada di toko
sudah habis. Dalam kondisi ini pembeli atau konsumen tersebut tidak
mempunyai kontak atau nomor telpon seles yang akan mengirim barang
tersebut. Tetapi pembeli tersebut mengingat bahwa nama supervisior
dari seles tersebut mengandung kata 'AN' dan pada saat melakukan
pembelian seles juga menyertakan id_seles pada nota pembelian. Untuk
kebutuhan tersebut, konsumen memutuskan untuk membuka system basis
data dari perusahaan tersebut dan menghendaki data yang keluar berupa
nama seles, alamat (apabila rumah dari seles tersebut tidak jauh dari
alamat toko maka konsumen bisa datang kerumah seles yang
bersangkutan), nama supervisior yang digunakan sebagai petunjuk,
jadwal_kirim, dan nama barang yang akan dikirim.
a. Kode Program
select seles.nama, seles.alamat, supervisior.nama,
jadwal_kirim.jadwal, barang.nama_barang
from seles inner join supervisior inner join jadwal_kirim inner
join pembelian inner join barang
on seles.ID_wilayah=supervisior.ID_wilayah
where supervisior.nama like "%AN%" and jadwal_kirim.id_seles =
seles.id_Seles and jadwal_kirim.id_beli = pembelian.id_beli and
pembelian.id_barang=barang.id_barang;
b. Screenshot Hasil
c. Penjelasan
Operasi diatas berfungsi untuk menampilkan data yang diperoleh
dari fungsi join yang dilakukan antara table seles, table
supervisior, table jadwal_kirim, table pembelian, dan juga table
jadwla_kirim. Dari kelima table diatas bisa dibuat table seperti
dalam gambar diatas yaitu menampilkan nama seles yang bernama Ciko,
dan Erzi dengan alamat seles di Jl Melati No.17 dan Jl Jakarta
No.97 dimana supervisior dari kedua seles tersebut adalah Anton dan
Andri. Jadwal kirim mereka dilakukan pada tanggal 20 April 2016 dan
barang yang mereka kirim adalah kertas. Kemudian, untuk tanggal 15
April 2016 barang yang akan dikirim adalah permen.
Untuk mendapatkan data tersebut bisa digunakan fungsi inner
join dengan setiap table, dimana masing-masing table harus
mempunyai nilai yang sama. Dalam table ini digunakan id_wilayah
untuk melakukan operasi inner join pada table seles dan table
supervisior. Kemudian, digunakan syarat lainnya yaitu nama
supervisior yang mengandung kata 'AN'. Pada table jadwal_kirim dan
table seles digunakan id_seles untuk membangun relasi dari kedua
table. Table jadwal_kirm dan table pembelian digunakan id_beli dan
yang terakhir, pada table pembelian dan barang digunakan id_barang.
6. Studi Kasus 6
Perusahaan ingin melakukan pendataan pegawai perusahaan dengan
menggunakan nama dan juga id_wilayah dengan menggunakan penggabungan
data. Hal ini dilakukan karena untuk mengetahui perkembangan jumlah
pegawai. Mengingat bahwa 1 minggu lagi adalah tahun baru.
a. Kode Program
select nama, id_wilayah from seles
union
select nama, id_wilayah from supervisior;
b. Screenshot Hasil
c. Penjelasan
Operasi diatas berfungsi untuk melakukan pendataan terhadap
banyaknya pegawai yang bekerja dalam perusahaan tersebut. Cara
pendataan tersebut digunakan fungsi union atau penggabungan data.
Union dalam kasus ini melibatkan table seles dan juga table
supervisior dan dari masing-masing table menggunakan field nama,
dan juga id_wilayah. Ketika menghendaki penggunaan fungsi union
maka harus diperhatikan bahwa fungsi union akan berkerja atau
berfungsi jika data yang akan ditampilkan mempunyai field yang
sama.
7. Studi Kasus 7
Perusahaan menginginkan supervisior yang berada diwilayah Jawa
Timur untuk memberikan laporan banyaknya jadwal pengiriman yang
dilakukan oleh seles dalam kurun waktu tertentu. Karena data ini akan
digunakan untuk meningkatkan jabatan dari pegawa perusahan.
a. Kode Program
select jadwal_kirim.jadwal,
count(jadwal_kirim.jadwal)
as jumlah from jadwal_kirim
inner join target_seles
on jadwal_kirim.id_seles
=target_seles.id_seles
group by jadwal;
b. Screenshot Hasil
c. Penjelasan
Operasi diatas berfungsi untuk melakukan penghitungan jadwal
kirim yang dilakukan dalam kurun waktu tertentu. Untuk memecahkan
kasus tersebut maka dibuatlah operasi basis data dengan menggunakan
fungsi agregat yang kombinasikan dengan menggunakan fungsi join.
Pengertian dari operasi diatas adalah bahwa program akan
menampilkan field jadwal yang terdapat pada table jadwal_kirim
kemudian menghitung berapa banyak pengiriman yang dilakukan oleh
seles dari perusahan dalam kurun waktu tertentu. Penghitungan
tersebut akan dilakukan berdasarkan fungsi inner join yang
digunakan pada table jadwal kirim dan juga table target kirim
dimana dari table-table tersebut yang digunakan sebagai pembanding
adalah field id_seles. Ketika ditampilkan maka jadwal kirim akan
dikempokkan berdasarkan jadwal atau tanggal pengiriman.
8. Studi Kasus 8
PT Borwita ingin mendapatkan data gaji seles dari seluruh wilayah
supervisior yang ada di Jawa Timur. Data tersebut akan berisikan
id_gaji_seles, id_seles, dan juga gaji. Gaji yang dibutuhkan adalah
gaji yang lebih kecil daripada gaji yang terkecil. Untuk menampilkan
data tersbut pegawai kantor menggunakan id_seles yang memiliki gaji
paling renndah. Hal ini dilakukan untuk mencegah adanya tindak yang
tidak diinginkan.
a. Kode Program
select*
from gaji_seles
where gaji > any
(select gaji from gaji_seles where id_seles = 3489);
b. Screenshot Hasil
c. Penjelasan
Operasi diatas berfungsi untuk menampilkan table daftar
gaji seles yang diperoleh dari pengoperasian operator any. Dalam
pembuatan table ini digunakan kondisi dimana gaji > any.
Perintah tersebut mempunyai arti bahwa gaji yang akan
ditampilkan lebih besar daripada gaji seles yang terkecil.
Pengertian dari perintah tersebut adalah program akan
menampilkan data yang terdapat pada table gaji_seles. Dimana
gaji yang terdapat pada table tersebut diperoleh dari penggunaan
query lagi atau disebut dengan subquery. Subquery yang digunakan
adalah subquery yang mempunyai fungsi untuk menampilkan gaji
seles dengan kondisi id seles = 3489.
9. Studi Kasus 9
Perusahan ingin mengirimkan bingkisan kepada pegawai. Perusahan
ingin menitipkan bingkisna tersebut kepada supervisior yang mempunyai
alamat yang sama dengan seles. Untuk mendapatkan data tersebut
perusahan membuat sebuah perintah. Perintah tersebut dibuat dengan
menggunakan view. Dalam perintah view tersebut terdapat subquery.
Subquery berfungsi untuk menampilakan alamat dengan syarat tertentu.
Namun sayangnya, alamat supervisior tidak ada yang sama dengan alamat
seles. Sehingga data yang ditampilnya hanya alamat supervisior. Karena
perintah yang digunakan adalah perintah not in ini disebabkan
kelalaian pegawai yang diberikan tugas untuk mendapatkan data
tersebut.
a. Kode Program
create view vSubQueryB
as
select *
from supervisior
where alamat not in (select seles.alamat from supervisior, seles
where supervisior.ID_wilayah=seles.ID_wilayah);
b. Screenshot Hasil
c. Penjelasan
Operasi diatas merupakan operasi yang menggunakan view.
Operasi ini berarti meminta program untuk membuat table maya yang
berisikan perintah-perintah tertentu. Perintah yang digunakan
diatas mempunyai pengertian bahwa data yang ditampilkan pada table
tersebut harus memenuhi syarat tertentu. Dalam kasus ini field
alamat yang akan digunakan sebagai syarat. Dimana alamat yang akan
ditampilkan adalah alamat yang yang tidak terdaftar dalam table
supervisior dan juga table seles dimana kondisi yang digunakan
dalam teble tersebut adalah id_wilayah yang sama. Perintah-perintah
tersebut akan masuk dalam proses pembuatan view. Kemudian untuk
mengakses data tersebut digunakan printah select dari mana view
tersebut.
10. Studi Kasus 10
Seorang seles dari PT BORWITA mengundurkan diri karena alasan
tertentu. Karena banyak data dari seles tersebut yang telah dibuat.
Maka apabila seles tersebut berhenti bekerja maka data yang sangkutan
dengan seles tersebut harus dihapus. Untuk mempersingkat waktu
penghapusan data pegawai kantor dari perusahaan tersebut melakukan
penghapusan dengan menggunakan trigger.
a. Kode Program
delimiter //
create trigger deletedseles
after delete on seles
for each row
begin
delete from jadwal_kirim
where id_seles= old.id_seles ;
delete from target_seles
where id_seles= old.id_seles ;
delete from gaji_seles
where id_seles= old.id_seles ;
end//
delimiter ;
delete from seles where ID_SELES=1106;
b. Screenshot Hasil
Table Seles
Table Jadwal_Kirim
Table Gaji_Seles
Table Target_Seles
c. Penjelasan
Operasi diatas merupakan fungsi trigger. Fungsi ini selalu
dimulai dengan delimiter // dan diakhiri dengan end//. Diantara
tanda untuk memulai dan mengakhiri trigger tersebut terdapat sebuah
perintah yang berfungsi untuk memproses data pada table-table
tertentu. Perintah yang terkadung dalam trigger ini adalah perintah
untuk melakukan penghapusan pada table-table yang ada pada database
tersebut dengan table yang mengandung id seles tertentu. Kerena
pada kasus ini yang digunakan id seles 1106 maka semua data yang
terdapat id 1106 akan dihapus.
11. Studi Kasus 11
Dua buah toko memutuskan untuk tidak melakukan pembelian
kepada seles. Hal ini dilakukan oleh pemilik toko kerena seles yang
biasa melayani atau memasok kebutuhan toko mempunyai pelayanan yang
kurang menyenangkan dalam kurun waktu belakangan ini. Akibat keputusan
ini maka pihak perusahaan melakukan penghapusan data terhadap toko-
toko tersebut. Perusahaan menggunakan fungsi trigger untuk melakukan
penghapusan tersebut. Hal ini dilakukan oleh perusahaan karena fungsi
trigger dianggap lebih efisien apabila diterapkan dalam kasus ini.
a. Kode Program
delimiter //
create trigger latihan
after delete on toko
for each row
begin
delete from toko
where id_toko=old.id_toko;
delete from pembelian
where id_toko=old.id_toko;
end //
delete from toko where id_toko like 50 and 100;
b. Screenshot Hasil
Table toko
Table pembelian
c. Penjelasan
Operator diatas berfungsi untuk melakukan penghapusan secara
bersamaan terhadap table-table tertentu. Dalam kasus ini yang
mengalami penghapusan secara bersamaan adalah table pembelian dan
juga tabel toko hal ini dilakukan karena pembeli sudah tidak
melakukan pembelian lagi terhadap seles. Untuk melakukan
penghapusan dengan metode seperti itu maka digunakan fungsi
trigger. Dalam kasus ini field yang digunakan untuk menghubungkan
antar table adalah field id_toko. Dengan begitu maka toko-toko yang
sudah tidak melakukan pembelian pada seles maka akan dihapus secara
otomatis.
12. Studi Kasus 12
Toko ingin mengubah proses pembayaran barang dari pembeli.
Berawal dari penghitungan manual menggunakan kalkulator menjadi
penghitungan modern dengan menggunakan barcode. Hal ini dilakukan
untuk mempermudah atau mempercepat dalam proses penghitungan. Tujuan
lainnya adalah untuk mengurangi penumpukkan antrian dalam proses
pembarayan. Buatlah program yang dapat melakukan hal tersebut.
a. Kode Program
delimiter //
create procedure coba(
in id_beli_sekarang int(10))
begin
select pembelian.id_barang, barang.nama_barang
from pembelian inner join barang
on pembelian.id_barang=barang.id_barang
where pembelian.id_beli=id_beli_sekarang;
end //
delimiter ;
call coba (10);
b. Screenshot Hasil
c. Penjelasan
Operasi diatas berfungsi untuk menampilkan data dengan
menggunakan kata kunci tertentu. Agar program dapat berfungsi
secara efisien dan tidak lama dalam pemanggilan perintah ketika
dioperasikan. Maka, perintah-perintah tersebut dikemas dalam bentuk
stored procedure. Dalam kasus ini stoted yang dibuat mempunyai cara
kerja atau barcode yang akan pada toko-toko atau swalayan. Stored
procedure tersebut akan menampilkan sebuah table yang berisikan
field id_barang dan juga field nama_barang.
Kata kunci yang digunakan dalam fungsi join yang ada pad stored
procedure ini adalah id_beli yang ada pada table pembelian.
Kemudian untuk melakukan pemanggilan dari perintah yang terdapat
pada stored procedure ini adalah call coba (coba adalah nama dari
stores procedure) (11) (11 adalah id_pembelian yang terdapat pada
table pembelian.
13. Studi Kasus 13
Sebuah toko ingin mengetahui data tentang nama barang,
id_barang, harga dan juga stok. Hal ini dilakukan untuk melakukan
pertimbangan terhadap harga barang yang ingin dibeli. Karena
dikalangan masyarakat lebih mengutamakan harga dari suatu barang
tertentu. Selain alasan tersebut pemilik toko juga memperhatikan
jumlah barang yang dimiliki oleh seles. Karena kemungkinan pemilik
toko ingin melakukan pembelian dengan jumlah yang cukup kebasar
mengingat kebutuhan konsumen yang lumayan besar. Jadi data yang
terdapat pada table tersebut akan mempengaruhi pemikiran dari pemilik
toko.
a. Kode Program
delimiter //
create procedure cobacoba(
in id_barang_beli int(20))
begin
select*from barang
where id_barang=id_barang_beli;
end //
delimiter ;
call cobacoba (9999);
b. Screenshot Hasil
c. Penjelasan
Operasi diatas berfungsi untuk menampilkan data yang
berkaitan dengan table barang. Untuk membuat fungsi dari operasi
diatas menjadi efisien dan sederhana dalam penggunaan program. Maka
dikemaslah perintah tersebut dalam bentuk stored procedure.
14. Studi Kasus 14
Perusahaan dari PT.BORWITA CITRA PRIMA ingin melakukan
mendataan gaji yang akan diterima oleh masing-masing seles. Gaji yang
diperoleh oleh masing-masing seles akan diperoleh dari pendapatan yang
diperoleh seles tersebut dalam waktu satu bulan. Dalam kasus ini gaji
seles bisa mengalami penambahan dan pengurangan gaji. Untuk
mempermudah penghitungan gaji seles maka dibuatlah fungsi transaction
yang melibatkan dua buah parameter.
a. Kode Program
Start Transaction
delimiter //
create procedure gaji_Seles(
in pendapatan int(10),
in id_gaji_dari int (10)
)
begin
declare Lebih int(10);
declare gaji int(20);
set lebih=pendapatan - (select gaji from gaji_seles
where id_gaji_seles=id_gaji_dari);
if (select gaji from gaji_seles
where id_gaji_seles=id_gaji_dari) then
if(lebih<=500000) then
update gaji_seles set gaji=gaji+lebih-400000
where id_gaji_seles=id_gaji_dari;
select gaji from gaji_seles
where id_gaji_seles=id_gaji_dari;
else
update gaji_seles set gaji=gaji+lebih-500000
where id_gaji_seles=id_gaji_dari;
select gaji from gaji_seles
where id_gaji_seles=id_gaji_dari;;
end if;
end if;
end //
delimiter ;
call gaji_seles (5200000,552);
commit ;
b. Screenshot Hasil
c. Penjelasan
Operasi diatas berfungsi untuk menampilkan gaji dari seles
dengan menggunakan fungsi transaction. Dalam fungsi transaction
tersebut terdapat perintah yang fungsi untuk memproses atau
mengolah gaji yang akan didapat oleh setiap seles berdasarkan
pendapatan yang diperoleh pada satu bulan. Kriteria penambahan atau
pengurangan pada setiap gaji seles terdapat pada fungsi diatas.
Gaji seles akan ditambah Rp 250.000,- apabila pendapatan yang
diperoleh dalam satu bulan lebih dari Rp 500.000,- terhadat gaji
normal seles. Dan jika kurang maka gaji_seles akan dipotong atau di
kurangi sebesar Rp 400.000,-. Untuk kasus ini program dibuat dengan
menggunakan dua buah parameter IN yaitu operator in pendapatan dan
in id_gaji_dari.
15. Studi Kasus 15
Buatlah rogram yang sama seprti maka studi kasus 14. Dengan
menggunakan table gaji_supervisior dan juga target_supervisior. Hal
ini dilakukan oleh perusahaan dengan tujuan untuk meningkatkan kinerja
dari pegawai perusahan tersebut.
a. Kode Program
Start Transaction
delimiter //
create procedure gaji_Supervisior(
in pendapatan int(10),
in id_gaji_dari int (10)
)
begin
declare Lebih int(10);
declare gaji int(20);
set lebih=pendapatan - (select gaji from gaji_supervisior
where id_gaji_superior=id_gaji_dari);
if (select gaji from gaji_supervisior
where id_gaji_superior=id_gaji_dari) then
if(lebih<=500000) then
update gaji_supervisior set gaji=gaji+lebih-400000
where id_gaji_superior=id_gaji_dari;
select gaji from gaji_supervisior
where id_gaji_superior=id_gaji_dari;
else
update gaji_supervisior set gaji=gaji+lebih-500000
where id_gaji_superior=id_gaji_dari;
select gaji from gaji_supervisior
where id_gaji_superior=id_gaji_dari;
end if;
end if;
end //
delimiter ;
call gaji_supervisior (16000000,34);
commit ;
b. Screenshot Hasil
c. Penjelasan
Operator diatas mempunyai fungsi dan tugas seperti halnya yang
dimiliki oleh program pada study kasus 14. Namun, dalam kasus ini
yang digunakan adalah table untuk target_supervisior dan
gaji_supervisior. Syarat atau ketentuan yang berlaku pada perolehan
gaji seles juga berlaku untuk memperoleh atau mengolah gaji
supervisior.
H. Kesimpulan
Program yang kami buat ini adalah program yang berguna untuk
menghitung gaji karyawan dalam sebuah perusahaan. Program ini terdapat
database PT BORWITA yang menyimpan beberapa tabel, guna menyimpan data-data
karyawan di perusahaan tersebut.
Terdapat 15 studi kasus untuk mengimplementasi table table yang telah
dibuat, 15 kasus tersebut diambil dari modul yang telah dipelajari pada
saat praktikum. Didalam database PT BORWITA terdapat perintah - perintah
untuk menyelesaikan berbagai masalah yang terjadi baik dalam perusahaan
maupun pada konsumen.
Daftar Pustaka
Tim Asisten Dosen. 2016. Basis Data. Modul II DDL & DML Malang:
Unversitas Negeri Malang.
Tim Asisten Dosen. 2016. Basis Data. Modul III Fungsi Agregat Malang:
Unversitas Negeri Malang.
Tim Asisten Dosen. 2016. Basis Data. Modul IV Join dan Union Malang:
Unversitas Negeri Malang.
Tim Asisten Dosen. 2016. Basis Data. Modul V Subquery dan View Malang:
Unversitas Negeri Malang.
Tim Asisten Dosen. 2016. Basis Data. Modul VI Trigger Malang: Unversitas
Negeri Malang.
Tim Asisten Dosen. 2016. Basis Data. Modul VII Stored Procedure Malang:
Unversitas Negeri Malang.
Tim Asisten Dosen. 2016. Basis Data. Modul VIII Transaction Malang:
Unversitas Negeri Malang.