Sabtu, 13 Maret 2010

Perpustakaan(basdat)

makalah yang sudah jadi bisa di donlod
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.




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

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

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);

create table buku(
id_buku varchar2(6) primary key,
judul varchar2(50),
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) );

create table meminjam(
kode_pinjam varchar2(10),
id_anggota varchar2(10),
id_buku varchar2(10),
tgl_pinjam date,
tgl_kembali date null,
constraint pk_meminjam primary key (kode_pinjam,id_buku),
constraint cons_anggota foreign key (id_anggota) references anggota (id_anggota));


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');

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');

insert into anggota values ('A-01','Fitri Annisa','Jl.melati','Cirebon','P',08122482623,'v3.annisa@gmail.com');
insert into anggota values ('A-02','Candra Wulandari','Jl.mawar','Boyolali','P',085229979288,'chandra@gmail.com');
insert into anggota values ('A-03','Nurul Amanda','Jl.pembangunan','Cirebon','P',085295711348,'nurul@yahoo.com');
insert into anggota values ('A-04','Ibnu Yahya','Jl.tuparev','Solo','L','085674890671','ibnu@gmail.com');
insert into anggota values ('A-05','M. Salman','Jl.teratai','Cirebon','L',085224145123,'salmanism@yahoo.co.id');
insert into anggota values ('A-06','Panji Setiawan','Jl.galunggung','Cirebon','L','085224675589','jipan@gmail.com');
insert into anggota values ('A-07','Rahadian','Jl.malabar','Arjawinangun','L',086786678877,'raha_12@gmail.com');
insert into anggota values ('A-08','Usman Faizal','Jl.merapi','Cimahi','L',0811244296,'usman_ganteng@gmail.com');
insert into anggota values ('A-09','Hari Purnama','Jl.parkit','Cirebon','L','085224431007','hari007@yahoo.com');
insert into anggota values ('A-10','Wildan Fadli','Jl.kelud','Cirebon','L',081324676289,'welldone@gmail.com');
insert into anggota values ('A-11','Putih Ainun','Jl.pemuda','Arjawinangun','P',08575435678,'ainun@yahoo.co.id');
insert into anggota values ('A-12','Dimas Zakky','Jl.riau','Sidoarjo','L',0227505076,'dimas@gmail.com');
insert into anggota values ('A-13','Reza Hikmah','Jl.trunojoyo','Lumajang','L',085258023889,'ressa@gmail.com');
insert into anggota values ('A-14','Arlavinda','Jl.ganesha','Bandung','P',08122217488,'arla_granger@yahoo.com');
insert into anggota values ('A-15','Sukma Permana','Jl.bintaro','Jatiwangi','L',085710000376,'aptx@gmail.com');

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');

insert into meminjam values('KP-01','A-05','B-04','19-March-2009','26-March-2009');
insert into meminjam values('KP-02','A-09','B-02','27-March-2009','3-April-2009');

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;
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;

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');
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);
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
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;

Tidak ada komentar:

Posting Komentar