Anda di halaman 1dari 15

TUBES DBMS

APLIKASI PERPUSTAKAAN

disusun oleh:
Dimas Zakky (30208006)
Nurul Amanda (30208102)
Reza Hikmah A (30208225)

Politeknik Telkom
Jalan Telekomunikasi No 1
DAFTAR ISI
BAB I PENDAHULUAN...........................................................................................................................3
1.1 Latar Belakang...................................................................................................................................3
1.2 Rumusan Masalah..............................................................................................................................3
1.3 Tujuan................................................................................................................................................3
1.4 Batasan Masalah................................................................................................................................3
BAB II IMPLEMENTASI SYSTEM..........................................................................................................4
2.1 ER Diagram.......................................................................................................................................4
2.2 Tabel Berdasarkan ERD....................................................................................................................5
2.3 Skema Relasi.....................................................................................................................................6
2.4 Query.................................................................................................................................................7
2.4.1 Query Create Table.....................................................................................................................7
2.4.2 Query Insert Table......................................................................................................................8
2.4.3 Query Procedure.........................................................................................................................9
2.4.4 Query Function.........................................................................................................................11
2.4.5 Query Trigger...........................................................................................................................13
BAB III PENUTUP...................................................................................................................................14
3.1 Kesimpulan......................................................................................................................................14

2
BAB I PENDAHULUAN
1.1 Latar Belakang
Pada masa ini perkembangan teknologi computer sangat pesat dan cenderung berjalan
beriringan dimana banyak perorangan maupun perusahaan yang menggunakan computer
sebagai alat bantu dalam bidang pengolahan data dan informasi. Dengan pemakaian
teknologi system komputerisasi maka kecepatan dan ketepatan kerja sangat menunjang
sekali.
Salah satu system yang dapat membantu dalam pengolahan data dan informasi adalah
Data Base Managemen System (DBMS). DBMS adalah perangkat lunak yang digunakan
untuk mengolah dan memanggil query basis data, misalnya Oracle.
Salah satu aplikasi yang membutuhkan suatu system manajemen basis data adalah
perpustakaan. System ini akan memudahkan admin dalam melakukan penambahan,
pencarian, dan penghapusan data buku serta peminjaman pada data perpustakaan.
Untuk itulah dibuatkan database buku pada sebuah perpustakaan untuk membantu
baik bagi petugas perpustakaan maupun bagi para peminat buku, sehingga dapat
memudahkan akses bagi mereka.

1.2 Rumusan Masalah


1) Apa keuntungan yang akan diperoleh dari pembuatan basis data perpustakaan?
2) Bagaimana merancang basis data perpustakaan?
3) Pengolahan data apa saja yang dapat dilakukan oleh admin?

1.3 Tujuan
1) Untuk memudahkan petugas perpustakaan (admin) dalam pencarian informasi serta
pengolahan data
2) Mengetahui cara merancang basis data perpustakaan.
3) Mengetahui jumlah dan daftar buku yang dipinjam, serta nama peminjam buku.

1.4 Batasan Masalah


Proposal ini hanya kana membahas mengenai system dalam pengolahan suatu data,
khususnya dalam peminjaman buku pada sebuah perpustakaan.

3
4
BAB II IMPLEMENTASI SYSTEM
2.1 ER Diagram

 Untuk satu jenis buku diperkirakan akan memiliki banyak judul buku, tetapi satu
judul buku akan masuk ke dalam satu jenis buku.
 Untuk satu penerbit akan menerbitkan buku lebih dari satu buku, tetapi satu judul
buku akan diterbitkan oleh satu penerbit saja.
 Satu judul buku dipinjam oleh banyak anggota, setiap boleh anggota melakukan
banyak peminjaman lebih dari satu judul buku.

5
2.2 Tabel Berdasarkan ERD
TABEL ANGGOTA

ID NAMA ALAMAT KOTA SEX E- TGL MASUK


ANGGOTA MAIL

Pk (ID Anggota)

TABLE MEMINJAM

KODE ID ID TGL TGL STATUS TERLAMBAT


PINJAM ANGGOTA BUKU PINJAM KEMBALI

Pk (Kode Pinjam, id_buku)


Fk (ID Buku) reff Buku(id Buku)
Fk (ID Anggota) reff Anggota(ID Anggota)

TABEL BUKU

ID BUKU JUDUL THN NO RAK JUMLAH KD KD JENIS


TERBIT PENERBIT

Pk (No Buku)

Fk (KD Penerbit) reff Penerbit(Kode Penerbit)

Fk (KD Jenis) reff Jenis(Kode Jenis)

TABEL PENERBIT

KODE NAMA ALAMAT TELP E-MAIL


PENERBIT PENERBIT

Pk (Kode Penerbit)

TABEL JENIS

KODE JENIS
JENIS BUKU

Pk (Kode Jenis)

6
2.3 Skema Relasi
TABEL ANGGOTA

ID NAMA ALAMAT KOTA SEX E- TGL MASUK


ANGGOTA MAIL

Pk (ID Anggota)

TABLE MEMINJAM

KODE ID ID TGL TGL STATUS TERLAMBAT


PINJAM ANGGOTA BUKU PINJAM KEMBALI

Pk (Kode Pinjam, id_buku)


Fk (ID Buku) reff Buku(id Buku)
Fk (ID Anggota) reff Anggota(ID Anggota)

TABEL BUKU

ID BUKU JUDUL THN NO RAK JUMLAH KD KD JENIS


TERBIT PENERBIT

Pk (No Buku)

Fk (KD Penerbit) reff Penerbit(Kode Penerbit)

Fk (KD Jenis) reff Jenis(Kode Jenis)

TABEL PENERBIT

KODE NAMA ALAMAT TELP E-MAIL


PENERBIT PENERBIT

Pk (Kode Penerbit)

TABEL JENIS

7
KODE JENIS
JENIS BUKU

Pk (Kode Jenis)

Dalam database ini terdiri dari beberapa tabel,antara lain:

 Tabel Anggota yaitu untuk mengetahui identitas tentang anggota perpustakaan tersebut.
 Tabel Peminjaman yaitu transaksi peminjaman buku oleh anggota.
 Tabel Penerbit yaitu identitas penerbit yang menerbitkan buku.
 Tabel Buku yaitu berisi identitas suatu buku.
 Tabel Jenis yaitu mengenai jenis buku yang ada di perpustakaan itu.

2.4 Query
2.4.1 Query Create Table

Table 1
create table jenis_buku(
kode_jenis varchar2(6) primary key,
jenis_buku varchar2(15));

Table 2
create table penerbit(
kode_penerbit varchar2(5) primary key,
nama_penerbit varchar2(30),
alamat varchar2(50),
telepon number(15),
email varchar2(50));

Table 3
create table anggota(
id_anggota varchar2 (5) primary key,
nama varchar2(30),
alamat varchar2(50),
kota varchar2(20),
sex char(10),
no_telp number(15),
tanggal_masuk date);

Table 4
create table buku(
id_buku varchar2(6) primary key,
judul varchar2(50),

8
jml_buku number(3),
tahun_terbit number(4),
no_rak number(3),
kode_penerbit varchar2(5),
kode_jenis varchar2(6),
constraint cons_jenis foreign key (kode_jenis) references jenis_buku (kode_jenis),
constraint cons_penerbit foreign key (kode_penerbit) references penerbit (kode_penerbit) );

Table 5
create table meminjam(
kode_pinjam varchar2(10),
id_anggota varchar2(10),
id_buku varchar2(10),
tgl_pinjam date,
tgl_kembali date null,
status varchar2(20) not null,
terlambat number,
constraint pk_meminjam primary key (kode_pinjam,id_buku),
constraint cons_anggota foreign key (id_anggota) references anggota (id_anggota),
constraint cons_buku foreign key (id_buku) references buku (id_buku));
2.4.2 Query Insert Table

Table 1
insert into jenis_buku values ('JB-01','Novel');
insert into jenis_buku values ('JB-02','IT');
insert into jenis_buku values ('JB-03','Religi');
insert into jenis_buku values ('JB-04','Majalah');
insert into jenis_buku values ('JB-05','Kesehatan');

Table 2
insert into penerbit values ('P-01','PT.
Gramedia','Jakarta',0213106292,'fiksi@gramedia.com');
insert into penerbit values ('P-
02','Informatika','Bandung',0227317812,'buku.it@informatika.com');
insert into penerbit values ('P-03','Gagas
Media','Surabaya',0315315342,'gagasmedia@gmail.com');
insert into penerbit values ('P-04','Mizan','Semarang',0213106292,'mizan@yahoo.com');
insert into penerbit values ('P-05','Bentang','Yogyakarta',0213106292,'bentang@live.com');

Table 3
insert into anggota values ('A-01','Fitri Annisa','Jl.melati','Cirebon','P',08122482623,'12-
dec-2008');
insert into anggota values ('A-02','Candra
Wulandari','Jl.mawar','Boyolali','P',085229979288,'9-feb-2008');

9
insert into anggota values ('A-03','Nurul
Amanda','Jl.pembangunan','Cirebon','P',085295711348,'18-jan-2009');
insert into anggota values ('A-04','Ibnu Yahya','Jl.tuparev','Solo','L','085674890671','12-
dec-2008');
insert into anggota values ('A-05','M. Salman','Jl.teratai','Cirebon','L',085224145123,'9-feb-
2008');
insert into anggota values ('A-06','Panji
Setiawan','Jl.galunggung','Cirebon','L','085224675589','18-jan-2009');
insert into anggota values ('A-
07','Rahadian','Jl.malabar','Arjawinangun','L',086786678877,'9-feb-2008');
insert into anggota values ('A-08','Usman Faizal','Jl.merapi','Cimahi','L',0811244296,'12-
dec-2008');
insert into anggota values ('A-09','Hari Purnama','Jl.parkit','Cirebon','L','085224431007','18-
jan-2009');
insert into anggota values ('A-10','Wildan Fadli','Jl.kelud','Cirebon','L',081324676289,'9-
feb-2008');
insert into anggota values ('A-11','Putih
Ainun','Jl.pemuda','Arjawinangun','P',08575435678,'12-dec-2008');
insert into anggota values ('A-12','Dimas Zakky','Jl.riau','Sidoarjo','L',0227505076,'18-jan-
2009');
insert into anggota values ('A-13','Reza
Hikmah','Jl.trunojoyo','Lumajang','L',085258023889,'18-jan-2009');
insert into anggota values ('A-14','Arlavinda','Jl.ganesha','Bandung','P',08122217488,'12-
dec-2008');
insert into anggota values ('A-15','Sukma
Permana','Jl.bintaro','Jatiwangi','L',085710000376,'18-jan-2009');

Table 4
insert into buku values('B-01','Laskar Pelangi',10,2008,4,'P-01','JB-01');
insert into buku values('B-02','Jaringan Komputer',15,2007,5,'P-02','JB-02');
insert into buku values('B-03','Looks Magazine',5,2009,1,'P-04','JB-03');
insert into buku values('B-04','5 Menara',8,2008,4,'P-01','JB-03');
insert into buku values('B-05','Diet Sehat Golongan Darah',6,2006,2,'P-01','JB-05');
insert into buku values('B-06','Siti Nurbaya',10,2001,4,'P-05','JB-01');
insert into buku values('B-07','Dzikir dan Doa',5,2004,3,'P-04','JB-03');
insert into buku values('B-08','24 Wajah Billy',5,2006,2,'P-01','JB-01');
2.4.3 Query Procedure
 Prosedur yang dijalankan pada saat terjadi transaksi peminjaman buku, program ini
secara otomatis menginsertkan satu baris record ke dalam table meminjam.
create or replace procedure pinjam(
id anggota.id_anggota%type,
id_buku buku.id_buku%type)
is
pinjam meminjam.kode_pinjam%type;

10
pinjam1 meminjam.kode_pinjam%type;
tanggal_pinjam meminjam.tgl_pinjam%type;
masuk date;
kembali date;
begin
masuk := to_char(sysdate,'dd-mon-yy');
kembali := masuk+7;

select kode_pinjam
into pinjam
from meminjam
where id_anggota=id and tgl_pinjam=masuk;
pinjam:=f_total_pinjam;
insert into meminjam values(pinjam,id,id_buku,masuk,kembali,'Belum
Kembali',0);
exception
when too_many_rows then
insert into meminjam values(pinjam,id,id_buku,masuk,kembali,'Belum
Kembali',0);
when no_data_found then
pinjam1:=f_total_pinjam+1;
insert into meminjam values(pinjam1,id,id_buku,masuk,kembali,'Belum
Kembali',0);
end;
/
exec pinjam('A-01','B-01');

 Prosedur yang dijalankan pada saat terjadi transaksi pengembalian buku, program ini
secara otomatis mengupdate satu baris record pada table meminjam.
create or replace procedure kembali(
id anggota.id_anggota%type,
buku buku.id_buku%type)
is
x number:=0;
tanggal_sekarang date;
tanggal_kembali date;
begin
tanggal_sekarang:=to_char(sysdate,'dd-mon-yy');

select tgl_kembali into tanggal_kembali


from meminjam
where id_anggota=id and id_buku=buku and status='Belum Kembali';

x:=tanggal_sekarang-tanggal_kembali;

11
if x<=0 then
x:=0;
else x:=x;
end if;

update meminjam
set status='Sudah Kembali', terlambat=x
where id_anggota=id and id_buku=buku and tgl_kembali=tanggal_kembali;
end;
/

exec kembali('A-01','B-01');

 Prosedur untuk membuat laporan peminjaman yang menampilkan buku apa saja yang
pernah dipinjam oleh suatu anggota, dengan inputan id anggota.
create or replace procedure peminjaman (id anggota.id_anggota%type)
is
cursor cur1 is select nama,alamat,kota,id_buku,judul,count(id_buku) as jumlah
from anggota a join meminjam m on a.id_anggota=m.id_anggota
join buku b
on m.id_buku = b.id_buku
where a.id_anggota = id
group by nama,alamat,kota,id_buku,judul;
vrec cur1%rowtype; x number;
begin
open cur1;
dbms_output.put_line('LAPORAN PEMINJAMAN ');
dbms_output.put_line('=====================');
fetch cur1 into vrec;
dbms_output.put_line('ID Anggota = '||id);
dbms_output.put_line('Nama Anggota = '||vrec.nama);
dbms_output.put_line('Alamat = '||vrec.alamat);
dbms_output.put_line('Kota = '||vrec.kota);
dbms_output.put_line('============================================');
dbms_output.put_line(rpad('ID Buku',8,' ')||rpad('Judul',25,' ')||rpad('Jumlah',6,' '));
dbms_output.put_line('============================================');
x := 0;
LOOP
dbms_output.put_line(rpad(vrec.id_buku,8,' ')||rpad(vrec.judul,25,' ')||
rpad(vrec.jumlah,6,' '));
x:= x+vrec.jumlah;
fetch cur1 into vrec;
exit when cur1%notfound;
end loop;
dbms_output.put_line('============================================');
dbms_output.put_line('Total Buku yang dipinjam = '||x||' buah buku');

12
close cur1;
end;
/

2.4.4 Query Function


 Function yang dipanggil oleh procedure pinjam, digunakan untuk menghitung secara
otomatis kode pinjam pada table meminjam.
create or replace function f_total_pinjam
return number
is
x number:=0;
begin
select max(kode_pinjam) into x from meminjam;
return x;
end;
/

 Function yang dijalankan apabila terdapat keterlambatan dalam pengembalian buku,


untuk mengetahui anggota tersebut terlambat atau tidak dalam mengembalikan buku, bisa
kita lihat pada table meminjam di kolom terlambat. Untuk keterlamabatan dalam
pengembalian tiap satu buku, dikenakan denda sebesar Rp 1.000/hari.
create or replace function denda(
inp_id meminjam.id_anggota%type,
pinjam meminjam.tgl_pinjam%type)
return number
is
cursor cur is
select judul,(terlambat*1000) as jumlah from meminjam m join buku b
on m.id_buku = b.id_buku
where id_anggota=inp_id and tgl_pinjam=pinjam and status='Sudah Kembali';
t number := 0;
begin
dbms_output.put_line('============================================');
dbms_output.put_line(rpad('Judul Buku',25,' ')||rpad('Jumlah',6,' '));
dbms_output.put_line('============================================');
for x in cur loop
if cur%found then
dbms_output.put_line(rpad(x.judul,25,' ')||rpad(x.jumlah,6,' '));
t:=t+x.jumlah;
end if;
end loop;
dbms_output.put_line('============================================');
return (t);

13
end;
/

declare
inp_id meminjam.id_anggota%type:='&id_anggota';
pinjam meminjam.tgl_pinjam%type:='&tanggal_pinjam';
begin
dbms_output.put_line('Total Denda : ' || denda(inp_id,pinjam));
end;
/

2.4.5 Query Trigger


 Trigger yang akan dijalankan apabila terjadi proses insert pada table meminjam.
create or replace trigger after_insert_row_peminjaman
after insert on meminjam
for each row
begin
if inserting then
update buku
set jml_buku = jml_buku - 1
where id_buku = :new.id_buku;
end if;
end;
/

 Trigger yang akan dijalankan apabila terjadi proses update pada table meminjam.
create or replace trigger after_update_row_peminjaman
after update of Status on meminjam
for each row
begin
if updating then
update buku
set jml_buku = jml_buku + 1
where id_buku = :old.id_buku;
end if;
end;
/

2.4.6 View
 View ini berfungsi untuk memperliharkan buku yang tersedia kepada penyewa
create or replace view v_buku (judul,jml_buku,no_rak,nama_penerbit,jenis_buku)
as
select judul,jml_buku,no_rak,nama_penerbit,jenis_buku

14
from penerbit p join buku b
on p.kode_penerbit = b.kode_penerbit
join jenis_buku j
on b.kode_jenis = b.kode_jenis
with read only;

BAB III PENUTUP


3.1 Kesimpulan
Dengan dibuatnya database untuk perpustakaan, dan pemanfaatan PL/SQL dalam
pembuatan procedure, fungsi, view, serta trigger, maka memudahkan admin untuk mengetahui
berapa jumlah buku yang ada selain itu pengolahan data dalam perpustakaan juga akan lebih
mudah

15

Anda mungkin juga menyukai