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.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.
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
Pk (ID Anggota)
TABLE MEMINJAM
TABEL BUKU
Pk (No Buku)
TABEL PENERBIT
Pk (Kode Penerbit)
TABEL JENIS
KODE JENIS
JENIS BUKU
Pk (Kode Jenis)
6
2.3 Skema Relasi
TABEL ANGGOTA
Pk (ID Anggota)
TABLE MEMINJAM
TABEL BUKU
Pk (No Buku)
TABEL PENERBIT
Pk (Kode Penerbit)
TABEL JENIS
7
KODE JENIS
JENIS BUKU
Pk (Kode Jenis)
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');
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;
/
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;
/
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;
15