Oleh:
Aimmatul Azizah (160533611463)
Almas Amalia Azhar (160533611499)
Andisa Talenta Oktaviani (160533611441)
Crismon Dwi Indah Kartikasari (160533611434)
A Latar Belakang
Inventaris adalah daftar yang memuat semua barang milik kantor yang
dipakai untuk melaksanakan tugas. Inventaris barang sangatlah penting bagi
kelangsungan sebuah Perusahaan dan Instansi. Salah satu atau beberapa
perlengkapan mengalami gangguan pasti akan menghambat jalannya roda
perekonomian Perusahaan atau Instansi tersebut, yang biasanya berupa tidak
teraturnya keorganisasian sebuah inventaris kantor atau kurangnya sebuah
sistem dalam menginventaris perlengkapan kantor. Oleh karena itu,
dibutuhkan sebuah sistem untuk memanage data inventaris kantor.
Dengan adanya kemajuan IT yang semakin pesat, dimana bukan
hanya menggunakan sosial media ataupun sekedar browsing saja tetapi
fenomena internet yang ada saat ini telah mengubah pandangan hidup orang-
orang pada masa saat ini. Berdasarkan hal tersebut, maka dikembangkan
sebuah basis data yang dapat digunakan untuk melakukan transaksi
peminjaman barang inventaris barang tersebut. Dengan pembuatan basis data
ini maka data peminjaman dapat lebih teratur dan ssun rapi sehingga dapat
memudahkan peruahaan teraebut dapat lebih mudah mengidentifikasi barang
investaris perusahaan tersebut.
Pada basis data base inventaris barang ini berisikan:
1 Tb_pegawai yang berisikan data dari Pegawai, seperti kd_pegawai,
nm_pegawai, jk, tgl_lahir, jln (alamat), kota (alamat) dan status
2 Tb_barang yang berisikan data Barang, seperti kd_brg, nm_brg,
jns_brg, jml_brg.
3 Tb_peminjaman yang berisikan data peminjaman, seperti
id_peminjam, kd_pegawai, tgl_pinjam dan petugas.
4 Tb_detail_pinjam yang berisikan data barang yang dikembalikan
seperti id_pinjam, kd_brg, dan jml_brg.
5 Tb_pengembalian yang berisikan data barang yang dikembalikan,
seperti id_pinjam, tgl_kembali, dan petugas.
6 Tb_detail_kembali yang berisikan data barang yang dikembalikan
seperti id_pinjam, kd_brg, jml_brg, dan kondisi
7 Tb_Suplier yang berisikan data suplier, seperti id_pengirim,
nm_pengirim, jk, tgl_lahir, jalan (alamat), kota(alamat), dan no_pt.
8 Tb_pengiriman_barang yakni tabel yang berisikan alamat perusahaan
yang mengirimkan barang yang berisikn, seperti kd_brg,nm_brg,
jml_brg, tgl_kirim, id_prngirim
9 Tb_perusahaan yakni tabel yang berisikan data dari perusahaan
suplier, seperti no_pt, nm_pt, jalan (alamat), kota (alamat), dan
jenis_pt
10 Tb_status yakni tabel status yang berisikan apakah pegawai termasuk
petugas atau tidak yang berisi status dan ket.
B Tujuan
Tujuan dibuatnya data base ini adalah :
1 Mempermudah petugas dalam mendata barang yang masuk dan barang
yang keluar karena dipinjam.
2 Mempermudah perusahaan mendata jumlah barang inventarisnya.
3 Mempermudah dalam mengindentifikasi barang saat keluar atau
dipinjam.
C Dasar Teori
1) Agregat
Fungsi Deskripsi
Mengembalikan jumlah (banyaknya atau kemunculannya)
COUNT
nilai di suatu kolom
Mengembalikan jumlah (total atau sum) nilai di suatu
SUM
kolom
AVG Mengembalikan rata-rata (average) nilai di suatu kolom
MIN Mengembalikan nilai terkecil (minimal) di suatu kolom
MAX Mengembalikan nilai terbesar (maximal) di suatu kolom
Untuk mendapatkan fungsi agregat, kita harus menggunakan aggregate
operator atau fungsi agregat. Berikut ini adalah beberapa fungsi atau
operator untuk agregasi.
a. MAX(NAMA_KOLOM) : fungsi ini digunakan untuk
mendapatkan nilai terbesar dari suatu atribut hasil query.
b. MIN(NAMA_KOLOM) : fungsi ini digunakan untuk
mendapatkan nilai terkecil dari suatu atribut hasil query.
c. COUNT(*) : fungsi ini digunakan untuk mendapatkan nilai
banyaknya record dari query.
d. SUM(NAMA_KOLOM) : fungsi ini digunakan untuk
mendapatkan nilai total suatu atribut bertipekan numeric dari
query.
e. AVG(NAMA_KOLOM) : fungsi ini digunakan untuk
mendapatkan nilai rata-rata suatu atribut bertipe numeric hasil
query.
1. Keyword DISTINCT
Keyword DISTINCT dapat dimanfaatkan untuk mengeliminasi
duplikasi kemunculan data yang sama.
Sintaks keyword DISTINCT diperlihatkan sebagai berikut:
SELECT DISTINCT A1, A2, ..., An
FROM r1, r2, r3, ..., rm
WHERE P
2. Pengelompokan
Group By merupakan fungsi yang digunakan untuk melakukan
pengelompokan dari perintah SELECT. Group by seringkali
diperlukan untuk menjalankan agregate menjadi sebuah kelompok dari
hasil Query. Berikut struktur SQL untuk penampilan data :
SELECT [nama_kolom] FROM [nama_tabel] GROUP BY
[nama_kolom];
Operasi non-trivial 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 A1, A2, ..., An
FROM r1, r2, r3, ..., rm
GROUP BY A1, A2, ..., An
3. Having
Pada saat bekerja dengan fungsi agregat, terkadang diperlukan klausa
WHERE untuk menspesifikasikan hasil. Sayangnya, klausa WHERE
tidak boleh mengandung fungsi agregat. Sebagai solusi, kita bisa
memanfaatkan klausa HAVING. Penggunaan klausa ini mirip
WHERE.
4. Case
5. View
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.
Didalam 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 kontruksi dasar dari SQL dan basis data.
Join dapat didefinisikan sebagai kombinasi record dari dua atau lebih
table di dalam basis data relasional dan menghasilkan sebuah tabel
(temporary) baru yang disebut sebagai joined tabel. Join adalah
perintah SQL yang berfungsi untuk melakukan relasi antara kedua
tabel atau lebih yang saling memiliki hubungan / relasi (ditandai
dengan adanya primary key pada tabel master dan foregn key).
Tetapi pada dasrnya jika ingin mengambungan kedua tabel atau
lebih maka cukup menggunakan perintah JOIN saja mka tabel akan
saling berelasi asalkan data yang direlasikan benar. Selain
menggunakan jon cara lain untuk menghubungkan antara tabel juga
dapat menggunakan WHERE
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.
Adalah join yang menciptakan tabel hasil baru dengan
mengambungkan nilai-nilai kolom dari dua tabel ( A dan B)
didasarkan pada join predikat ELF JOIN adalah join yang
bergabung dengan dirinya sendiri.
Sintaks inner join diperlihatkan sebagai berikut :
3. Union
MySQL Union adalah statemaen yang mengkombinasikan dua
buah atau lebih resulset 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 resulset. Apabila Anda ingin record duplikat tetap di
tampilkan maka pada resulset tuliskan secara explisit UNION ALL.
Perbedaan Union dan Union All dapat dijelaskan pada gambar
diagram Venn 5 dan 6.
Gambar 5. Union
1. Subquery
a. Scalar Subquery
b. Multiple-Row Subquery
c. Multiple-Column Subquery
2. View
3. Update View
4) Trigger
1. Triger
2. Triger MySQL
5) Stored Procedure
IN
OUT
Mode ini mengindikasikan bahwa stored procedure dapat mengubah
parameter dan mengirimkan kembali ke program pemanggil.
INOUT
6) Transaction
Atomicity
Isolation
Durability
D Desain Database
1. Permodelan Erd
1.1 Menentukan Entitas
DATABASE Inventaris_barang
Tb_pegawai, tb_barang, tb_peminjaman,
tb_detail_peminjaman, tb_pengembalian,
tb_detail_kembali, tb_suplier,
ENTITAS tb_pengiriman_barang, tb_perusahaan, tb_status.
tb_pega - - Me - Meng - - - - -
wai
min embal
jam ikan
tb_baran - - - Dicat - Dica - dikiri - -
g
at tat m
tb_pemi Me - - dicata - - - - - -
njaman
nca t
tat
tb_ddeta - Me men - - - - - - -
il_pemin
muat cata
jam
t
tb_peng me - - - - Me - - - -
embalia
nca muat
n
tat
tb_detail - Me - - Dicat - - - - -
_kembal
muat at
i
tb_supli - - - - - - - Meng - -
er
irimk
an
tb_pengi - men - - - - Men - - -
riman_b
giri ganta
arang
mka rkan
n
tb_perus - - - - - - Men - - -
ahaan
gelua
rkan
tb_status ter - - - - - - - - -
ma
suk
1.4 Kardinalitas
1.5 Key
Entitas Primary Key Foregn Key
tb_pegawai Kd_pegawai
tb_barang Id_brg
tb_peminjaman Id_pinjam Kd_pegawai
tb_detail_peminjam Id_pinjam, kd_brg
tb_pengembalian Id_pinjam
tb_detail_kembali Id_pinjam, kd_brg
tb_suplier Id_pengirim
tb_pengiriman_barang Id_brg
tb_perusahaan No_pt
tb_status Status
1.10 Hasil
2. Normalisasi Tabel
Karena ada beberapa entitas yang membentuk suatu relasi dan
menciptakan relasi baru yaitu :
- Entitas tb_pegawai
- Entitas tb_barang
- Entitas tb_suplier
- Entitas tb_peminjaman
- Entitas tb_pengembalian
Maka akan menimbulkan entitas baru dari proses normalisasi data. Yaitu :
- Entitas tb_detail_pinjam
- Entitas tb_detail_kembali
- Entitas tb_perusahaan
- Entitas tb_pengiriman_barang
- Entitas tb_status
Tabel awal sebelum dinormalisasi :
a. Tabel tb_pegawai
b. Tabel tb_barang
kd_brg nm_brg jns_brg jml_brg
c. Tabel tb_peminjaman
id_pinjam kd_pegawai kd_brg tgl_pinjam jml_brg
d. Tabel tb_pengembalian
id_pinjam kd_pegawai kd_brg tgl_kembali jml_brg Kondisi
e. Tabel tb_suplier
id_pengirim nm_pengirim jk tgl_lahir usia Alamat No_pt
- Entitas tb_barang
kd_brg nm_brg Jns_brg Jlm_barang
- Entitas tb_peminjaman
id_pinjam kd_pegawai kd_brg tgl_pinjam jml_barang
- Entitas tb_pengembalian
id_pinjam kd_pegawai kd_brg tgl_kembali jml_brg Kondisi
- Entitas tb_suplier
id_pengirim nm_pengirim jk tgl_lahir usia jalan kota No_pt
Dari entitas baru diatas sudah tidak ada lagi data yang multivalue dan
atributnya simple atau atomik . sehingga bisa dikatakan bahwa ketiga
entitas diatas telah memenuhi normalisasi pertama.
2.2 2NF
langkah kedua adalah menormalisasikan kan ke 2NF dengan syarat :
1. Tidak ada redudansi data dan null value
2. Field-field yang bukan primary key bergantung penuh dengan primary
key sehingga perlu membuat functional dependency
a. Functional depedecy pada relasi tb_pegawai, tb_barang, tb_peminjaman,
tb_pengembalian, tb_suplier
- kd_pegawai → nm_pegawai, jk, tgl_lahir, jln, kota, status
- kd_brg→nm_brg, jns_brg, dan jml_barang
- id_pinjam→kd_pegawai, tgl_pinjam , petugas
- id_pinjam →tgl_kembali, petugas
- id_pengirim →nm_pengirim, jk, tgl_lahir, jalan, kota, no_pt
seperti di bawah ini :
a. Tabel tb_pegawai
kd_pegawai status
b. Tabel tb_barang
Untuk normalisasi hanya sampai 1NF saja sebab pada tabel
ini semua fild sudah bergantung pada primary key
c. Tabel tb_peminjaman
id_pinjam kd_pegawai kd_brg
d. Tabel tb_pengembalian
id_pinjam kd_pegawai kd_brg
e. Tabel suplier
no_pt id_pengirim
b. Tabel tb_barang
Tabel barang sudah normal pada normalisasi 1NF pertama
c. Tabel tb_peminjaman
Pada normalisasi 3NF ini maaka tabel tb_peminjaman di pecah
menjadi tb_peminjaman dan tabel tb_detail_pinjam.
tb_peminjaman
id_pinjam kd_pegawai tgl_pinjam
Tb_detail_pinjam
id_pinjam kd_brg jml_barang
d. Tabel tb_pengembalian
Pada normalisasi 3NF ini maaka tabel tb_pengembalian di pecah
menjadi tb_pengembalian dan tabel tb_detail_pengembalian.
tb_pengembalian
id_pinjam kd_pegawai tgl_kembali
Tb_detail_kembali
id_pinjam kd_brg jml_barang Kondisi
e. Tabel tb_suplier
Pada tabel tb_suplier untuk noormalisasi 3NF data di pecah menjadi
tabel tb_suplier , tb_perusahhan, tb_pengiriman
Tabel tb_suplier
id_pengirim nm_pengirim jk tgl_lahir usia jalan Kota
Tabel tb_perusahaan
no_pt nm_pt jalan kota
Tabel tb_pengiriman_barang
kd_brg nm_brg jml_brg
('PGW001','Agus Suwono','1987-05-11','L','jl.Terusan
Surabaya','Malang','0'),
('PGW002','Dinda Permata','1991-02-15','P','jl.basuki
Rahmat','Surabaya','0'),
('PGW003','Maharani Anggita','1990-10-05','P','jl.A.
Yani','Surabaya','i'),
('PGW004','Fajar Cahyono','1992-10-
21','L','jl.Jendral Sudirman','Yogyakarta','1'),
('PGW005','Junico Robin','1991-07-
25','L','jl.Kartini','Jember','0'),
('PGW006','Alin Septia','1990-09-
23','P','jl.Sumatra','Bandung','1'),
('PGW007','Irma Yosi','1990-10-10','P','jl.Paglima
Sudirman','Madiun','0'),
('PGW008','Ferry Faudzul','1992-09-
24','L','jl.Patimura','Malang','1'),
('PGW009','Irma Darmawati','1987-01-
01','P','jl.Cendrawasih','Surabaya','0'),
('PGW010','Frry Yanuar','1990-03-
03','L','jl.Sukomoro','Madiun','0');
('A001','Papan Tulis','ATK','20'),
('A002','Spidol','ATK','20'),
('A003','Bulpoin','ATK','20'),
('A004','Penghapus','ATK','20'),
('A005','Map','ATK','20'),
('A006','Gunting','ATK','20'),
('A007','Pengaris','ATK','20'),
('E001','Kamera DSLR','Elektronik','10'),
('E002','Laptop','Elektronik','10'),
('E003','PC','Elektronik','10'),
('E004','Kipas','Elektronik;,'10'),
('E005','LCD','Elektronik','10'),
('E006','White Screen','Elektronik','10'),
('F001','Meja','Furniture','20'),
('F002','Kursi','Furniture','20'),
('F003','Rak','Furniture','20'),
('F004','Laci','Furniture','20'),
('T001','Mobil','Transportasi','5'),
('T002','Sepeda Motor','Transportasi','5'),
('T003','Sepeda','Transportasi','5'),
('T004','Mobil Box','Transportasi','5');
('1001','PGW001','2017-05-06','PGW003'),
('1002','PGW002','2017-05-06','PGW003'),
('1003','PGW002','2017-05-06','PGW003'),
('1004','PGW005','2017-05-06','PGW003'),
('1005','PGW001','2017-05-06','PGW003'),
('1006','PGW001','2017-05-07','PGW004'),
('1007','PGW005','2017-05-07','PGW004'),
('1008','PGW009','2017-05-07','PGW004'),
('1009','PGW009','2017-05-07','PGW004'),
('1010','PGW007','2017-05-07','PGW004');
('1001','A003','5'),('1002','A002','7'),
('1003','E001','3'),('1004','E004','6'),
('1005','F001','8'),('1006','F004','9'),
('1007','T004','1'),('1008','T002','1'),
('1009','T002','2'),('1010','E005','5');
q. Mengisi tabel tb_pengembalian
Mengisi tabel tb_pengembalian dengan mengetikan query seperti berikut :
INSERT INTO 'tb_pengembalian'('id_pinjam',
'tgl_kembali','petugas')VALUES
('1001','2017-05-07','PGW004'),
('1002','2017-05-07','PGW004'),
('1003','2017-05-08','PGW006'),
('1004','2017-05-08','PGW006'),
('1005','2017-05-08','PGW006'),
('1006','2017-05-09','PGW008'),
('1007','2017-05-09','PGW008'),
('1008','2017-05-09','PGW008'),
('1009','2017-05-09','PGW008'),
('1010','2017-05-09','PGW008');
('1001','A003','5','Baik'),
('1002','A002','5','baik'),
('1002','A002','2','pecah'),
('1003','E001','3','baik'),
('1004','E004','4','baik'),
('1004','E004','2','pecah'),
('1005','F001','6','baik'),
('1005','F001','2','pecah'),
('1006','F004','8','baik'),
('1006','F004','1','pecah');
('001','Sumaryanto','L','1986-09-05','jl.Mawar
Indah','Tulungagung','PT110'),
('002','Agus Prianto','L','1970-11-
20','jl.Melati','Pasuruan','PT220'),
('003','Deni Atmaja','L','1983-05-
09','jl.Cempaka','Gresik','PT330'),
('004','Puji Astuti','P','1990-12-
11','jl.Seruni','Surabay','PT440');
t. Mengisi tabel tb_pengiriman_barang
Untuk mengisi tabel tb_pengiriman_barang mengetikan query sebagai
berikut :
INSERT INTO 'tb_pengiriman_barang'('kd_brg',
'nm_brg','jml_barang','tgl_kirim','id_pengirim')VA
LUES
('A002','Spidol','2','2017-05-07','003'),
('E004','Kipas','2','2017-05-08','002');
('PT110','Karya
Agung','Jl.Mercusuar','Jakarta','Transportasi'),
('PT110','Rahayu
Meubel','Jl.Kertaharja','Sidoarjo','Furniture'),
('PT110','Dian Ilmu','Jl.Dieng','Malang','ATK'),
('PT110','Sahabat
Elektro','Jl.Sudimoro','Yogyakarta','Transportasi'
);
('0','Pegawai Umum'),('1','Petugas');
F Studi Kasus
AGREGAT
1 Studi Kasus 1
Dapatkan jumlah jenis barang ATK ?
Query :
SELECT COUNT(jns_brg) AS jumlah FROM tb_barang WHERE
jns_brg = "ATK";
Screenshot :
Penjelasan :
Query diatas digunakan untuk menghitung jumlah jenis barrang ATK
dimana untuk menjumlahkannya menggunakan fungsi Agregat yaitu
COUNT dimana COUNT ini digunakan untuk menghitung banyaknya data
yang ada pada field jns_barang yang kemudian hasil dari COUNT akan
dikeluarkan sebagai jumlah dengan adanya query As jumlah yang artinya
hasil dari query COUNT(jns_brg) akkan dimasukkan kedalam field buatan
yaitu jumlah. Agar yang dihitung jumlahnya adalah barang yang
kategorinya ATK maka pada query ditambah dengan keterangan yaitu
dimana jns_brg atau jenis barangnya adalah ATK.
2 Studi Kasus 2
Dapatkan data barang yang mempunyai jumlah terkecil ?
Query :
SELECT kd_brg, nm_brg, jns_brg FROM tb_barang where
jml_brg = (SELECTMIN(jml_brg) FROM tb_barang)
screenshot :
Penjelasan :
Query agregat diatas yang menunjukkan dimana berguna untuk memcari
suatu data dengan niai terkecil yaitu Agregat MIN. Dengan query tersebut
kita akan menampilkan kd_brg, nm_brg, dan jns_brg dari
tb_barang dimana jml_brg adalah jumlah barang
minimal dari tb_barang.
3 Studi Kasus 3
Dapatkan total barang pada jenis elektronik ?
Query :
SELECT SUM(jml_brg) AS total_elektronik FROM
tb_barang WHERE jns_brg = "elektronik";
Screenshot hasil :
Penjelasan :
Query diatas digunakan untuk menghitung jumlah dari masing-masing
jenis barrang Elektronik dimana untuk menjumlahkannya menggunakan
fungsi Agregat yaitu SUM dimana SUM ini digunakan untuk menghitung
banyaknya data yang ada pada data barang pada table barang yang
kemudian hasil dari SUM akan dikeluarkan sebagai jumlah dengan adanya
query As total_elektronik yang artinya hasil dari query SUM(jml_brg)
akan dimasukkan kedalam field buatan yaitu total_elektronik. Agar yang
dihitung jumlahnya adalah barang yang kategorinya Elektronik maka pada
query ditambah dengan keterangan yaitu dimana jns_brg atau jenis
barangnya adalah Elektronik.
4 Studi Kasus 4
Dapatkan jumlah pegawai yang memiliki alamat di kota surabaya
Query :
SELECT COUNT(kd_pegawai) AS jml_pegawai FROM
`tb_pegawai` WHERE kota = "Surabaya"
Screenshot hasil :
Penjelasan :
Query diatas digunakan untuk menghitung jumlah pegawai yang memiliki
alamat kota surabaya dimana untuk menjumlahkannya menggunakan fungsi
Agregat yaitu COUNT dimana COUNT ini digunakan untuk menghitung
banyaknya data yang ada pada field kd_pegawai yang kemudian hasil dari
COUNT akan dikeluarkan sebagai jumlah dengan adanya query As
jml_pegawai yang artinya hasil dari query COUNT(kd_pegawai) akan
dimasukkan kedalam field buatan yaitu jml_pegawai. Agar yang dihitung
jumlahnya adalah pegawai yang alamat kotanya adalah Surabaya maka
pada query ditambah dengan keterangan yaitu dimana kota adalah Surabaya.
5 Studi Kasus 5
Dapatkan jumlah pegawai yang melayani peminjaman barang ?
Query :
SELECT COUNT(kd_pegawai) AS jml_pegawai FROM
`tb_pegawai` WHERE STATUS = "1"
Screenshot hasil :
Penjelasan :
Query
diatas
digunakan
untuk
Penjelasan :
Query diatas digunakan untuk mendapatkan data kota tempat tinggal
pegawai. Pada query diatas digunakan agregat yaitu DISTINCT dimana
agregat tersebut diguanakan untuk tidak menampilkan data yang sama. Pada
query diatas akan ditampilkan kota kota tempat tinggal pegawai. Jika dilihat
di tabel pegawai, ada beberapa pegawai ang berasal dari kota yang sama,
maka dari itu untuk mengantisipasi penampilan data yang sama, maka
diguankanlah agregat DISTINCT.
RELASI DAN JOIN
7 Studi kasus 7
Tampilkan nama peminjam barang ?
Query :
SELECT DISTINCT(tb_pegawai.nm_pegawai) FROM
tb_pegawai INNER JOIN tb_peminjaman WHERE
tb_pegawai.kd_pegawai = tb_peminjaman.kd_pegawai ;
Screenshot hasil :
Penjelasan :
Query diatas digunakan untuk menampilkan nama pegawai yang meninjam
barang. Untuk mendapatkan hasil yang diinginkan, query yang digunakan
menggunakan join, yaitu join antara table nama pegawai dan table
peminjaman. Karena pada table peminjaman tidak terdapat field nama
pegawai yang meminjam. Kunci dari relasi ini adalah pada kode pegawai,
yaitu kode pegawai yang terdapat pada table peminjaman akan ditemukan
siapa nama yang sesuai dengan kode tersebut pada table pegawai.
8 Studi kasus 8
Tampilkan nama barang yang dipinjam dan katagorinya ?
Query :
SELECT DISTINCT (tb_barang.nm_brg), tb_barang.jns_brg
FROM tb_barang INNER JOIN tb_detail_pinjam WHERE
tb_barang.kd_brg = tb_detail_pinjam.kd_brg;
Screenshot hasil :
Penjelasan :
Query diatas digunakan untuk menampilkan nama barang apa saja yang
dipinjam oleh pegawai beserta kategori barangnya. Karena pada table detail
pinjam tidak terdapat field kategori, sehingga untuk menampilkan kategori
diperlukan join dengan table barang. Kunci dari relasi ini adalah dari kode
barang, sehingga dari table barang dapat menunjuk pada nama barang yang
dilihat dari kode barang yang sesuai.
9 Studi kasus 9
Tampilkan transaksi data barang yang dipinjam ?
Query :
SELECT
tb_peminjaman.id_pinjam,tb_peminjaman.kd_pegawai,
tb_peminjaman.tgl_pinjam, tb_peminjaman.petugas,
tb_detail_pinjam.kd_brg,tb_detail_pinjam.jml_baran
g FROM tb_peminjaman INNER JOIN tb_detail_pinjam
WHERE tb_peminjaman.id_pinjam =
tb_detail_pinjam.id_pinjam;
Screenshot hasil :
Penjelasan :
Query diatas digunakan untuk menampilkan data barang yang dipinjam.
Karenapada table peminjaman tidak terdapat field-field barangvsecara
terperinci, sehingga pada untuk menampilkan data barang secara rinci
harus di join dengan table yang didalamnya terdapat detail barang, yaitu
tb_detail_pinjam, yang disitu id_pinjam sebagai kunci joinnya.
10 Studi kasus 10
menampilkan jumlah barang yang tidak dipinjam berdasarkan jenisnya ?
Query :
SELECT tb_barang.jns_brg, COUNT(tb_barang.jns_brg)
AS jumlah
FROM tb_barang LEFT JOIN tb_detail_pinjam
ON tb_barang.kd_brg = tb_detail_pinjam.kd_brg
WHERE tb_detail_pinjam.kd_brg IS NULL
GROUP BY tb_barang.jns_brg;
Screenshot :
Penjelasan :
Query diatas digunakan untuk menampilkan jumlah barang yang tidak
dipinjam berdasarkan jenisnya. Ditentukan dari table barang yang di left
join dengan tb_detail_pinjam yang disitu totalnya di NULL kan, sehingga
yang tampilan adalah yang selain dipinjam.
11 Studi kasus 11
Dapatkan namadanusia pegawai yang meminjam barang dan berumur
kurang dari 30 tahun
Query :
SELECT tb_pegawai.nm_pegawai, YEAR(NOW())-
YEAR(tb_pegawai.tgl_lahir) AS usia
FROM tb_pegawai INNER JOIN tb_peminjaman
ON tb_pegawai.kd_pegawai = tb_peminjaman.kd_pegawai
WHERE YEAR(NOW())-YEAR(tb_pegawai.tgl_lahir) < 30
GROUP BY tb_peminjaman.kd_pegawai;
Screenshot
Penjelasan:
Query diatas digunakan untuk
mendapatkan nama pegawai beserta
usia yang meminjam kan barang
dengan syarat usia kurang dari 30
tahun. Untuk mendapatkan hasil yang
diminta yaitu dengan menggunakan
inner join antara tb_pegawai dan tb_peminjaman. Dari table pegawai
dipanggil nama serta usia, karena usia bukan sebagai field, maka membuat
field derivate baru dengan menggunakan rumus diatas. Kemudian akan
ditampilkan nama beserta usia yang meminjam barang dan usianya
memenuhi syarat, yaitu kurang dari 30 tahun.
SUB QUERY
12 Studi Kasus 12
Menampilkan nama pegawai yang meminjam kamera DSLR
Query :
SELECT nm_pegawai FROM tb_pegawai WHERE kd_pegawai
= (SELECT tb_peminjaman.kd_pegawai FROM
tb_peminjaman INNER JOIN tb_detail_pinjam WHERE
tb_peminjaman.id_pinjam =
tb_detail_pinjam.id_pinjam AND
tb_detail_pinjam.kd_brg = (SELECT kd_brg FROM
tb_barang WHERE nm_brg = "Kamera DSLR"))
Screenshot :
Penjelasan :
Query diatas digunakan untuk menampilkan nama pegawai yang
meminjaman kamera DSLR. Untuk mendapatkan nama-nama pegawai yang
meminjam kamera DSLR menggunakan sub query, karena sebelum
menemukan nama peminjam harus ditemukan dulu id_pegawai yang
meminjam dengan detail barang, nama barang apa saja yang dipinjam.
Kemudian diperlukan INNER JOIN tb_peminjaman dan tb_detail_pinjam
karena didalam tabel peminjaman tidak terdapat nama barang yang disini
adalah DSLR, sehingga harus dihubungkan dengan tb_peminjaman, dan
untuk menampilkan nama maka dihubungkan dengan tb_pegawai dengan
kunci id_pegawai.
13 Studi kasus 13
Menampilkan kd_barang dan nm_barang yang dipinjam dengan jumlah
peminjaman sama dengan 6.
Query :
SELECT kd_brg, nm_brg from tb_barang WHERE kd_brg =
(SELECT kd_brg from tb_detail_pinjam WHERE
jml_barang =6);
Screenshot :
Penjelasan :
Query diatas digunakan untuk menampilkan kode barang dan nama barang
yang dipinjam dengan syarat jumlah peminjaman sama dengan 6. Untuk
menampilkan hal ini diperlukan adanya select didalam select. Select
pertama digunakan untuk mensingkronkan antara nama barang dan kode
barang. Selanjutnya terdapat select didalamnya yang disitu sebagai syarat
bahwa kode barang tersebut mempunyai jumlah barang 6 pada tabel detail
pinjam.
14 Studi kasus 14
Menampilkan nama barang elektronik yang sudah dikembalikan
SELECT nm_brg from tb_barang WHERE kd_brg IN
(SELECT kd_brg from tb_detail_kembali WHERE kd_brg
like "E%");
Screenshoot :
Penjelasan:
Query diatas digunakan untuk menampilkan nama barang elektronik yang
sudah dikembalikan. Untuk mengetahui nama barang yang sudah
dikembalikan tersebut diambil dari tabel tb_barang, dan dengan syarat
didalam select kedua tedapat pencaian barang pada tb_detail_kembali
dengan kunci pencarian adalah kode barang yang berinisial huruf E.
15 Studi kasus 15
menampilkan kd_pegawai dan nm_pegawai yang mencatat pengeluaran
barang jenis furnitur
Query :
SELECT kd_pegawai, nm_pegawai FROM tb_pegawai WHERE
kd_pegawai IN (SELECT petugas FROM tb_peminjaman
WHERE id_pinjam IN (SELECT id_pinjam from
tb_detail_pinjam WHERE kd_brg LIKE "F%"))
16 Studi kasus 16
Mengurutkan data pegawai dari yang paling sering meminjam barang
sampai yang paling sedikit meminjam barang
Query :
Penjelasan:
Query diatas digunakan untuk mengurutkan data pegawai yang paling sering
meminjam barang sampai pegawai yang paling sedikit meminjam barang.
Dari table pegawai diambil data nama, tanggal lahir jalan dan kota untuk
ditampilkan. Selanjutnya dari kd_pegawai dihitung berapa serinng muncul,
dan yang paling banyak maka kode itu akan berada pada urutan paling atas.
STORED PROCEDUR
17 Studi kasus 17
Menambah barang dengan nama yang berbeda menggunakan procedure
Query :
DELIMITER //
CREATE PROCEDURE tambah_barang(
IN kd_brg varchar (6),
IN nm_brg varchar (20),
IN jns_brg varchar (15),
IN jml_brg int (5))
BEGIN
INSERT INTO tb_barang VALUES(
kd_brg,nm_brg,jns_brg,jml_brg);
END //
DELIMITER ;
Pemanggilan Fungsi
CALL tambah_barang("F005","Meja Lipat",
"Furnitur",20);
Penjelasan :
Query diatas digunakan untuk menambah barang dengan nama baru, yang
sebelumnya belum ada didalam isi data mengunakan procedure. Nama
procedurenya adalah tambah_barang yang didalamnya terdapat kd_brg,
nm_brg, jns_brg dan jml_brg, dimana apabila ingin menambah barang maka
tinggal melakukan call tambah_barangi dan memasukkan data barang yang
ingin ditambah sesuai dengan field yang ada.
18 Studi kasus 18
Mendapatkan data barang berdasarkan jenisnya
Query:
DELIMITER //
CREATE PROCEDURE GETtabelbarangbyjenis(IN jns
VARCHAR(15))
BEGIN
SELECT * FROM tb_barang
WHERE jns_brg = jns;
END //
DELIMITER ;
Screenshot :
CALL GETtabelbarangbyjenis("ATK");
Penjelasan :
Query diatas merupakan pembuatan prosedure untuk memudahkan dalam
menampilkan data berdasarkan jenisnya. Disini ketika ingin menampilkan
data barang bedasarkan jenisnya, maka tidak perlu menuliskan query
panjang, cukup dengan CALL GETtabelbarangbyjenis(“ATK”).
19 Studi kasus 19
Menambah pegawai menggunakan procedur
Query :
DELIMITER //
CREATE PROCEDURE ADDpegawai(
IN kd_pegawai varchar(6),
IN nm_pegawai VARCHAR (25),
IN tgl_lahir DATE,
IN jk VARCHAR (1),
IN jln VARCHAR (25),
IN kota VARCHAR (10),
IN status VARCHAR (1))
BEGIN
INSERT INTO tb_pegawai VALUES (
kd_pegawai, nm_pegawai, tgl_lahir, jk, jln, kota,
status);
END //
DELIMITER ;
Screenshoot :
CALL cek("A010");
Penjelasan:
Program ini digunakan untuk membuat procedure untuk mempermudah
dalam kroscek apakah stok barang masih tersedia atau tidak. Nama
prosedurnya adalah cek, didalamnya pendeklarasian str yang digunakan
untuk memunculkan string baru saat perintah dijalankan. Kemudian kondisi
apabila barang yang ada pada tb_barang jumlahnya leih dari 0 maka akan
menampilkan bahwa barang tersedia, namun jika tidak memenuhi kondisi
tersebut maka akana menampikan bahwa barang kosong. Untuk memanggil
triger ini menggunakan query CALL cek (“kode barang yang akan dicek”)
21 Study kasus 21
Menampilkan jumlah barang furniture yang dipinjam
Query :
DELIMITER //
CREATE PROCEDURE GETjumlahbarangpinjam()
BEGIN
SELECT SUM(jml_barang) FROM tb_detail_pinjam
WHERE kd_brg LIKE "F%";
END //
DELIMITER ;
Screenshot :
CALL GETjumlahbarangpinjam();
Penjelasan:
Query diatas digunakan untuk menampilkan jumlah barang furniture yang
sedang dipinjam. Procedue ini diberi nama GETjumlahbarangpinjam.
Didalam procedue ini, untuk mengeahui jumlah barang furniture yang
dipinjam ialah dari tabel detail pinjam, barang yang mempunyai kode
dengan awalan huruf F. Maka akan menampilkan jumlah dari barang
furniture yang dipinjam, awalan huruf F dikarenakan semua jenis furniure
mempunyai awalan kode huruf F.
TRIGER
22 Study kasus 22
DELIMITER //
END //
Trigger hapuspinjam digunakan untuk menghapus data peminjam yang
sudah mengembalikan barang yang dipinjam. Pada tb_pengembalian
terjadi kejadian insert dimana setelah memasukkan data id_pinjam,
tgl_kembali, dan petugas pada table tersebut, maka akan dieksekusi
query menghapus field dimana id_pinjam pada tabel tb_peminjaman
sama seperti id_pinjam pada tb_pengembalian.
DELIMITER //
END IF ;
END
DELIMITER //
CREATE TRIGGER suplaybarang
END//
Trigger suplaybarang digunakan untuk menambah jumlah barang pada
tabel barang ketika terjadi pengiriman barang. Pada
tb_pengiriman_barang terjadi kejadian insert dimana setelah
memasukkan data kd_brg, nm_brg, jml_barang, tgl_kirim, dan
id_pengirim pada table tersebut, setelah itu mengupdate jumlah barang
dimana jml_brg pada tb_barang ditambah dengan jumlah barang yang
kirim pada tb_pengiriman_barang dimana kd_brg pada tb_barang sama
seperti kd_brg yang telah diinputkan dengan tb_pengiriman_barang.
G Kesimpulan
Dalam perancangan database inventaris kantor ini terdapat 10 buah tabel
yaitu tb_pegawai, tb_barang, tb_detail_peminjaman, tb_peminjaman,
tb_pengembalian, tb_detail_kembali, tb_pengiriman, tb_suplier,
tb_perusahaan dan tb_status.
Dalam database Inventaris kantor ini menggunakan fungsi agregat seperti
sum, count, min, dan max untuk mempermudah melakukan perhitungan
seperti jumlah barang keseluruhan, barang yang dipinjam dan barang yang
dikembalikan. Menggunakan join untuk menggabungkan antara satu tabel
dengan tabel yang lain seperti mengabungkan antara tabel tb_peminjaman
dengan tabel tb_detail_peminjaman untuk bisa mengetahui apa saja barang
yang telah di pinjam. Menggunakan view untuk mempermudah dalam
menampilkan data dalam database inventaris kantor. Menggunakan sub query
untuk memudahkan menampilkan data sesuai dengan kriteria ataupun kondisi
tertentu. Menggunakan trigger untuk mempermudah proses seperti
pengurangan stok barang dan penambahan barang yang sudah dikembalikan.
Menggunakan stored procedure untuk mempermudah menampilkan data
seperti untuk menghitung total barang yang sedang dipinjam dan melihat
siapa saja pegawai yang meminjam barang. Dan juga menggunakan
transaction untuk mempermudah dalam transaksi peminjaman barang
inventaris, dan lain sebagainya.
Daftar Pustaka
1. Tim Asisten Dosen. 2016. Modul 1 Pengenalan MySQL. Malang :
Universitas Negeri Malang.
2. Tim Asisten Dosen. 2016. Modul 2 Objek-objek Basis Data. Malang :
Universitas Negeri Malang.
3. Tim Asisten Dosen. 2016. Modul 3 SQL. Malang : Universitas Negeri
Malang.
4. Tim Asisten Dosen. 2016. Modul 4 Fungsi Agregat. Malang :
Universitas Negeri Malang.
5. Tim Asisten Dosen. 2017. Modul 5 Relasi dan Join. Malang :
Universitas Negeri Malang.
6. Tim Asisten Dosen. 2017. Modul 6 Subquery. Malang : Universitas
Negeri Malang.
7. Tim Asisten Dosen 2017. Modul 7 Stored Proceudure : Universitas
Negeri Malang
8. Tim Asisten Dosen 2017. Modul 8 Triger : Universitas Negeri Malang
9. Tim Asisten Dosen 2017. Modul 9 View : Universitas Negeri Malang
10. Tim Asisten Dosen 2017. Modul 10 Transaksi: Universitas Negeri
Malang
Lampiran
JOB DESCRIPTION
Nama Tugas
Aimmatul Azizah Menyusun laporan
Mendesain ERD
Almas Amalia Azhar Mendesain database
Membuat ERD
Membuat studi kasus
Andisa Talenta Oktaviani Mendesain database
Membuat ERD
Membuat studi kasus
Crismon Dwi Indah K. Mendesain database
Membuat ERD
Membuat studi kasus
Menyusun Artikel
Gambar ERD database invenmtaris kantor