Ads 468x60px

Labels

Friday, 18 January 2013

Tugas SMBD Review_Materi_SMBD-Semester_Ganjil_2012-2013


SOAL:

Soal ini terkait dengan Sistem Pengolahan Data Perpustakaan SMA ABC (SPDP). SPDP adalah sebuah aplikasi web based yang melibatkan 6 dengan peran sbb:
·         Administrator berperan mengelola data user.
·         Petugas berperan mengelola seluruh data master, melayani dan mengelola data transaksi peminjaman, pengembalian, pembayaran denda keterlambatan, pembayaran denda buku rusak atau hilang, menyusun laporan yang terkait dengan data master dan transaksi.
·         Anggota dapat melakukan pencarian katalog, mengecek ketersediaan buku, mengupdate
identitas, melakukan peminjaman, dan pengembalian, dan pembayaran denda keterlambatan, penggantian buku rusak atau hilang.
·         Kepala Perpustakaan berhak untuk menentukan tarip denda keterlambatan pengembalian dan tarip penggantian untuk buku rusak & hilang, serta menerima laporan & informasi dari Petugas perpustakaan.
·         Kepala Sekolah berhak menerima laporan & informasi dari Petugas perpustakaan.
·         Pengunjung hanya dapat melakukan pencarian katalog.


Data master SPDP meliputi:
ð  user, anggota, buku, jenis buku, bidang ilmu buku, penerbit, penulis, propinsi, kabupaten, kecamatan, tarip denda (terlambat, hilang, rusak).
Data transaksi SPDP meliputi:
ð   pinjam, kembali, bayar denda terlambat mengembalikan buku, bayar denda buku rusak, bayar denda buku hilang

Berdasarkan keterangan tersebut di atas, buatlah;
1.      Buatlah rancangan struktur tabel database (dalam bentuk 3NF)
2.      Tentukan Primary Key & Foreign Key (jika ada) dalam setiap tabel database (dalam bentuk 3NF)
3.      Gambarkan diagram kerelasian antar tabel database
4.      Tuliskan perintah SQL untuk;
1) Membuat database perpustakaan
2) Membuat tabel database master & transaksi
3) Menghitung jumlah total semua koleksi perpustakaan
4) Menampilkan daftar buku dan penerbitnya, urut ascending berdasarkan abjad judul   buku
5) Menampilkan daftar anggota sedang meminjam buku, urut ascending berdasarkan tanggal pinjam
6) Menampilkan daftar seluruh anggota yang pernah membayar terlambat mengembalikan buku, urut ascending berdasarkan abjad nama anggota
7) Menampilkan daftar seluruh anggota yang pernah membayar denda buku hilang, urut ascending berdasarkan abjad nama anggota
8) Menampilkan daftar seluruh anggota yang pernah membayar denda buku rusak, urut ascending berdasarkan abjad nama anggota



JAWABAN
Untuk Soal Nomor 1 dan 2

RANCANGAN STRUKTUR TABEL DATABASE YG DIGUNAKAN
(DLM BENTUK 3NF) & PRIMARY KEY & FOREIGN KEY

1. Tabel: user
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
           1            
user_name
VarChar
20
No
-
Primary Key
           2            
password
VarChar
20
No
-
-
           3            
level_user
Char
1
No
5
1 =  admin;
2 =  kepala sekolah;
3 =  kepala perpustakaan
4 =  anggota;
5 = pengunjung

2. Tabel: tanggal_libur
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
           1            
tanggal_libur
Date

no
-
Primary Key
           2            
Keterangan_libur
Varchar
50
no
-
-

3. Tabel: tarif_denda
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
           1            
jumlah_hari_maksimal
Num
3
No
-
Primary Key
           2            
jumlah_denda
Num
7
No
-
-

4. Tabel: tarif _hilang
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
           1            
harga_maksimal
Num
7
No
-
Primary Key
           2            
jumlah_denda
Num
7
No
-
-

5. Tabel: tarif _rusak
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
           1            
harga_maksimal
Num
7
No
-
Primary Key
           2            
jumlah_denda
Num
7
No
-
-



6. Tabel: anggota
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
           1            
kode_anggota
Char
6
no
-
Primary Key
           2            
nama_anggota
VarChar
100
no
-
-
           3            
alamat
VarChar
100
no
-
-
           4            
kode_kecamatan
Char
6
no
-
Foreign Key
           5            
telepon
VarChar
12
yes
-
-
           6            
email
VarChar
20
yes
-
-
           7            
tgl_mulai_anggota
Date

no
-
-
           8            
jenis_anggota
Char
1
no
2
1 =  guru/karyawan;
2 =  siswa
           9            
status_anggota
Char
1
no
2
1 = aktif; 2 = tidak aktif
7. Tabel: jenis
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
           1            
kode_jenis_buku
Char
4
No
-
Primary Key
           2            
nama_jenis_buku
VarChar
20
No
-
-

8. Tabel: bidang
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
           1            
kode_bidang
Char
4
No
-
Primary Key
           2            
nama_bidang
VarChar
20
No
-
-

9. Tabel: penerbit
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
           1            
kode_penerbit
Char
4
No
-
Primary Key
           2            
nama_penerbit
VarChar
30
No
-
-
           3            
alamat
VarChar
100
no
-
-
           4            
kode_kecamatan
Char
6
no
-
Foreign Key
           5            
telepon
VarChar
12
yes
-
-
           6            
email
VarChar
20
yes
-
-

10. Tabel: penulis
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
           1            
kode_penulis
Char
4
No
-
Primary Key
           2            
nama_penulis
VarChar
100
No
-
-
           3            
alamat
VarChar
100
no
-
-
           4            
kode_kecamatan
Char
6
no
-
Foreign Key
           5            
telepon
VarChar
12
yes
-
-
           6            
email
VarChar
20
yes
-
-

11. Tabel: propinsi
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
           1            
kode_propinsi
Char
2
No
-
Primary Key
           2            
nama_propinsi
VarChar
30
No
-
-

12. Tabel: kabupaten
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
           1            
kode_kabupaten
Char
4
No
-
Primary Key
           2            
nama_kabupaten
VarChar
30
No
-
-
           3            
kode_propinsi
Char
2
No
-
Foreign Key

13. Tabel: kecamatan
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
           1            
kode_kecamatan
Char
6
No
-
Primary Key
           2            
nama_kecamatan
VarChar
30
No
-
-
           3            
kode_kabupaten
Char
4
No
-
Foreign Key

14. Tabel: pinjam
Catatan: kode_pinjam boleh tidak digunakan
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
           1            
kode_pinjam




Primary Key
           2            
kode_anggota
Char
6
No
-
Primary Key / Foreign Key
           3            
kode_buku
Char
10
No
-
Primary Key / Foreign Key
           4            
tanggal_pinjam
Date

No

Primary Key / Foreign Key
           5            
tanggal_harus_kembali
Date

N0
-
-

15. Tabel: kembali
Catatan:
·         kode_kembaliboleh tidak digunakan
·         jika tabel pinjam tidak menggunakan kode_pinjam, maka harus ada kode_anggota+kode_buku+tanggal_pinjam
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
           1            
kode_pinjam




Primary Key / Foreign Key
           2            
kode_kembali




Primary Key
           3            
kode_anggota
Char
6
No
-
Primary Key / Foreign Key
           4            
kode_buku
Char
10
No
-
Primary Key / Foreign Key
           5            
tanggal_pinjam
Date

No

Primary Key / Foreign Key
           6            
tanggal_kembali
Date

No
-
-

16. Tabel: bayar_denda
Catatan: jika tabel kembali tidak menggunakan kode_kembali, maka harus ada kode_anggota+kode_buku+tanggal_pinjam+tanggal_kembali
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
           1            
kode_kembali




Primary Key / Foreign Key
           2            
kode_anggota
Char
6
No
-
Primary Key/ Foreign Key
           3            
kode_buku
Char
10
No
-
Primary Key/ Foreign Key
           4            
tanggal_pinjam
Date

No

Primary Key/ Foreign Key
           5            
tanggal_bayar
Date

No
-
-
           6            
jumlah_denda
Num
9
No
0
Dihitung otomatis










17. Tabel: bayar_hilang
Catatan: jika tabel pinjam tidak menggunakan kode_pinjam, maka harus ada kode_anggota+kode_buku+tanggal_pinjam
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
           1            
kode_pinjam




Primary Key  / Foreign Key
           2            
kode_anggota
Char
6
No
-
Primary Key  / Foreign Key
           3            
kode_buku
Char
10
No
-
Primary Key  / Foreign Key
           4            
tanggal_pinjam
Date

No

Primary Key  / Foreign Key
           5            
tanggal_bayar
Date

No
-
-
           6            
jumlah_denda
Num
9
No
0
Dihitung otomatis

18. Tabel: bayar_rusak
Catatan: jika tabel pinjam tidak menggunakan kode_pinjam, maka harus ada kode_anggota+kode_buku+tanggal_pinjam
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
           1            
kode_pinjam




Primary Key / Foreign Key
           2            
kode_anggota
Char
6
No
-
Primary Key / Foreign Key
           3            
kode_buku
Char
10
No
-
Primary Key / Foreign Key
           4            
tanggal_pinjam
Date

No

Primary Key / Foreign Key
           5            
tanggal_bayar
Date

No
-
-
           6            
jumlah_denda
Num
9
No
0
Dihitung otomatis

19. Tabel: buku
No
Nama Field
Tipe
Ukuran
Null
Default
Keterangan
           1            
kode_buku
Char
10
No
-
Primary Key
           2            
Judul_buku
VarChar
100
No
-
-
           3            
kode_jenis
Char
4
No
-
Foreign Key
           4            
kode_bidang
Char
4
No
-
Foreign Key
           5            
kode_penulis_utama
Char
4
No
-
Foreign Key
           6            
kode_penerbit
Char
4
No
-
Foreign Key
           7            
jumlah
Num
1
No
-
-
           8            
bahasa
Char
1
No
1
1 = Indonesia; 2 = Asing
           9            
isbn
Char
12
No
-
-
         10          
tahun
Char
4
No
-
-
         11          
jumlah_halaman
Num
1
No
-
-
         12          
edisi
Char
1
No
1
-
         13          
cetakan_ke
Char
1
No
1
-
         14          
status
Char
1
No
1
1 = Baik; 2 = Rusak

JAWABAN Untuk Soal Nomor  3

Relasi Antar Tabel





JAWABAN Untuk Soal Nomor 4
PERINTAH SQL

3.     Perintah SQL untuk;
1)    Membuat database perpustakaan

ð  DEFINISI DATABASE

create database dbperpustakaan;

ð  DEFINISI TABEL DALAM DATABASE

use dbperpustakaan


2)    Membuat tabel database master & transaksi
a.     Tabel user

create table user (                                              
user_namevarchar(5) not nullunique primary key,                  
password varchar(20) not null,                                   
level_user char(1) default ‘5’check(level_user=‘1’ or level_user=‘2’ or level_user=‘3’ or level_user=‘4’ or level_user=‘5’));                                                

b.     Tabel Tangal Libur

create table tanggal_libur (                                     
tanggal_liburdate not nullunique primary key,                    
keterangan_libur varchar(50) not null);                          

c.      Tabel Tarif Denda


create table tarif_denda (                                 
jumlah_hari_maksimal tinyint(3) not null unique primary    key,jumlah_denda mediumint(9) not null);                   

d.     Tabel Tarif Hilang

create table tarif_hilang (                                
harga_maksimal mediumint (9) not null unique primary key,  
jumlah_denda mediumint(9) not null);                       


e.      Tabel Tarif Rusak


create table tarif_rusak (                                 
harga_maksimal mediumint (9) not null unique primary key,  
jumlah_denda mediumint(9) not null);                        

f.       Tabel Anggota
create table anggota (                                     
kode_anggota char(6) not null unique primary key,          
nama_anggota varchar(100) not null,                        
alamat varchar(100) not null,                              
kode_kecamatan char(6) not null,                           
telepon varchar(12),                                        
email varchar(20),                                          
tgl_mulai_anggota date not null,                           
jenis_anggota char(1) not null default                     ‘2’check(jenis_anggota=‘1’ or jenis_anggota=‘2’),          
 status_anggota char(1) not null default                   ‘1’check(status_anggota=‘1’ or status_anggota=‘2’),        
foreign key(kode_kecamatan) references kecamatan onupdate  cascade on delete cascade;                                 
g.     Tabel Jenis

create table jenis (                                       
kode_jenis_buku char(4) not null unique primary key,       
nama_jenis_buku varchar(20) not null;                      


h.     Tabel Bidang

create table bidang (                                      
kode_bidang char(4) not null unique primary key,           
nama_bidang varchar(20) not null;                          



i.       Tabel Penerbit

create table penerbit (                                    
kode_penerbit char(4) not null unique primary key,         
nama_penerbit varchar(30) not null,                        
alamat varchar(100) not null,                              
kode_kecamatan char(6) not null,                           
telepon varchar(12),                                       
email varchar(20),                                         
foreign key(kode_kecamatan) references kecamatan on update cascade on delete cascade;                                 

j.       Tabel Penulis

create table penulis (                                      
kode_penulis char(4) not null unique primary key,          
nama_penulis_utama varchar(100) not null,                  
alamat varchar(100) not null,                              
kode_kecamatan char(6) not null,                            
telepon varchar(12),                                       
email varchar(20),                                          
foreign key(kode_kecamatan) references kecamatan on update cascade on delete cascade;                                  

k.     Tabel Provinsi
create table propinsi (                                    
kode_propinsi char(2) not null unique primary key,         
nama_propinsi varchar(30) not null;                        

l.       Tabel Kabupaten
create table kabupaten (                                   
kode_kabupaten char(4) not null unique primary key,        
nama_kabupaten varchar(30) not null,                       
kode_propinsi char(2) not null,                            
foreign key(kode_propinsi) references propinsi on update   cascade on delete cascade;                                 
m.  Tabel Kecamatan
create table kecamatan (                                   
kode_kecamatan char(6) not null unique primary key,        
nama_kecamatan varchar(30) not null,                       
kode_kabupaten char(4) not null,                           
foreign key(kode_kabupaten) references kabupaten on update cascade on delete cascade;                                 

n.     Tabel Pinjam
create table pinjam (
kode_anggota char(6) not null,
kode_buku char(10) not null,
tanggal_pinjam date not null,
tanggal_harus_kembali date not null,
foreign key(kode_anggota) references anggota on update cascade on delete cascade,
foreign key(kode_buku) references buku on update cascade on delete cascade,
primary key(kode_anggota, kode_buku, tanggal_pinjam);

o.     Tabel Kembali
create table kembali (
kode_anggota char(6) not null,
kode_buku char(10) not null,
tanggal_pinjam date not null,
tanggal_ kembali date not null,
foreign key(kode_anggota, kode_buku,tanggal_pinjam) references pinjam on update cascade on delete cascade
primary key(kode_anggota, kode_buku, tanggal_pinjam);

p.    Tabel Bayar Denda
create table bayar_denda (
kode_anggota char(6) not null,
kode_buku char(10) not null,
tanggal_pinjam date not null,
tanggal_bayar date not null,
jumlah_denda mediumint(9),
foreign key(kode_anggota, kode_buku, tanggal_pinjam) references kembali on update cascade on delete cascade
primary key(kode_anggota, kode_buku, tanggal_pinjam);

q.     Tabel Bayar Hilang
create table bayar_hilang (
kode_anggota char(6) not null,
kode_buku char(10) not null,
tanggal_pinjam date not null,
tanggal_bayar date not null,
jumlah_denda mediumint(9),
foreign key(kode_anggota, kode_buku, tanggal_pinjam) references pinjam on update cascade on delete cascade
primary key(kode_anggota, kode_buku, tanggal_pinjam);

r.      Tabel Bayar Rusak
create table bayar_rusak (
kode_anggota char(6) not null,
kode_buku char(10) not null,
tanggal_pinjam date not null,
tanggal_bayar date not null,
jumlah_denda mediumint(9),
foreign key(kode_anggota, kode_buku, tanggal_pinjam) references pinjam on update cascade on delete cascade
primary key(kode_anggota, kode_buku, tanggal_pinjam);

s.      Tabel Buku
create table buku (
kode_buku char(10) not null unique primary key,
judul_buku varchar(100) not null,kode_jenis char(4) not null,kode_bidang char(4) not null,kode_penulis char(4) not null,kode_penerbit char(4) not null,jumlah tinyint(2) not null,bahasa char(1) not null default ‘1’check(bahasa=‘1’ or bahasa=‘2’),isbn char(12) not null,tahun char(4) nor null,jumlah_halaman mediumint (4) not null,edisi char(1) not  null, cetakan_ke char(1) not null,status char(1) default ‘1’ check(status=’1’ or status=’2’),foreign key (kode_jenis) references jenis on update cascade on delete cascade,foreign key(kode_bidang) references bidang on update cascade on delete cascade,foreign key(kode_penulis) references penulis on update cascade on delete cascade,foreign key(kode_penerbit) references penerbit on update cascade on delete cascade;




3)    Menghitung jumlah total semua koleksi perpustakaan


SELECT COUNT(*) FROM BUKU;


4)    Menampilkan daftar buku dan penerbitnya, urut ascending berdasarkan abjad judul   buku


SELECT buku.judul_buku, penerbit.nama_penerbit
FROM buku, penerbit
WHERE buku.kode_penerbit=pesan.kode_penerbit Order by judul_buku ASC;

5)    Menampilkan daftar anggota sedang meminjam buku, urut ascending berdasarkan tanggal pinjam


SELECT anggota.nama_anggota, pinjam.tanggal_pinjam
FROM anggota, pinjam
WHERE angota.kode_anggota=pinjam.kode_anggota order by tanggal_pinjam ASC;

6)    Menampilkan daftar seluruh anggota yang pernah membayar terlambat mengembalikan buku, urut ascending berdasarkan abjad nama anggota


SELECT anggota.nama_anggota, bayar_denda.kode_anggota
FROM anggota, bayar_denda
WHERE angota.kode_anggota=bayar_denda.kode_anggota order by nama_anggota ASC;


7)    Menampilkan daftar seluruh anggota yang pernah membayar denda buku hilang, urut ascending berdasarkan abjad nama anggota


SELECT anggota.nama_anggota, bayar_hilang.kode_anggota
FROM anggota, bayar_hilang
WHERE angota.kode_anggota=bayar_hilang.kode_anggota order by nama_anggota ASC;

8)    Menampilkan daftar seluruh anggota yang pernah membayar denda buku rusak, urut ascending berdasarkan abjad nama anggota


SELECT anggota.nama_anggota, bayar_rusak.kode_anggota
FROM anggota, bayar_rusak
WHERE angota.kode_anggota=bayar_rusak.kode_anggota order by nama_anggota ASC;

0 comments:

Post a Comment