Kamis, 17 Januari 2013

Tugas Individu

TUGAS INDIVIDU

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


 1.   SISTEM PENGOLAHAN DATA PERPUSTAKAAN SMAABC (SPDP)

          1.      Rancangan struktur tabel database yang digunakan(dalam bentuk 3NF)
          2.      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






     3.      Diagram Kerelasian Antar Tabel Database




 




































  4.  Perintah SQL

               1) membuat database perpustakaan
                         mysql>create database dbperpustakaan;

               2) membuat tabel database master & transaksi
                        mysql> use perpustakaan : 
Tabel User
mysql> create table user(
    -> user_name varchar(5) not null unique 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'));
Tabel Tanggal Libur
mysql> create table tanggal_libur(
    -> tanggal_libur date not null unique primary key,
    -> keterangan_libur varchar(50) not null);
Tabel Tarif Denda
mysql> create table tarif_denda(
    -> jumlah_hari_maksimal tinyint(3) not null unique primary key,
    -> jumlah_denda mediumint(9)not null);
Tabel Tarif Hilang 
mysql> create table tarif_hilang(
    -> harga_maksimal mediumint(9)not null unique primary key,
    -> jumlah_denda mediumint(9) not null);
Tabel Tarif Rusak 
mysql> create table tarif_rusak(
    -> harga_maksimal mediumint(9)not null unique primary key,
    -> jumlah_denda mediumint(9) not null);
Tabel Jenis
mysql> create table jenis(
    -> kode_jenis_buku char(4)not null unique primary key,
    -> nama_jenis_buku varchar(20)not null);
Tabel Bidang
mysql> create table bidang(
    -> kode_bidang char(4)not null unique primary key,
    -> nama_bidang varchar(20) not null);
Tabel Propinsi
mysql> create table propinsi(
    -> kode_propinsi char(2)not null unique primary key,
    -> nama_propinsi varchar(30) not null);
Tabel Kabupaten
mysql> 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(kode_propinsi)
    -> on update cascade on delete cascade);
Tabel Kecamatan
mysql> 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(kode_kabupaten)
    -> on update cascade on delete cascade);
Tabel Penerbit
mysql> 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,
    -> telp varchar(12),
    -> email varchar(20),
    -> foreign key(kode_kecamatan) references kecamatan(kode_kecamatan)
    -> on update cascade on delete cascade);
Tabel Penulis 
mysql> 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,
    -> telp varchar(12),
    -> email varchar(20),
    -> foreign key(kode_kecamatan) references kecamatan(kode_kecamatan)
    -> on update cascade on delete cascade);
Tabel Buku
mysql> create table buku(
    -> kode_buku char(10)not null unique primary key,
    -> judul_buku varchar(100)not null,
    -> kode_jenis_buku 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) not 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_buku) references jenis(kode_jenis_buku) on update cascade on delete ca
scade,
    -> foreign key(kode_bidang) references bidang(kode_bidang) on update cascade on delete cascade,
    -> foreign key(kode_penulis) references penulis(kode_penulis) on update cascade on delete cascade,
    -> foreign key(kode_penerbit) references penerbit(kode_penerbit) on update cascade on delete cascade);
Tabel Anggota
mysql> 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,
    -> telp 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(kode_kecamatan)
    -> on update cascade on delete cascade);
Tabel Pijam
mysql> 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(kode_anggota) on update cascade on delete cascade,
    -> foreign key(kode_buku) references buku(kode_buku) on update cascade on delete cascade,
    -> primary key(kode_anggota, kode_buku, tanggal_pinjam));
Tabel Kembali
mysql> 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(kode_anggota,kode_buku, tanggal_pinjam) on update cascade on delete cascade,
    -> primary key(kode_anggota, kode_buku,tanggal_pinjam));
Tabel Bayar Denda
mysql> 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(kode_anggota,kode_buku,tanggal_pinjam) on update cascade on delete cascade,
    -> primary key(kode_anggota,kode_buku,tanggal_pinjam));
Tabel Bayar Hilang
mysql> 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(kode_anggota,kode_buku tanggal_pinjam) on update cascade on delete cascade,
    -> primary key(kode_anggota, kode_buku, tanggal_pinjam));
Tabel Bayar Rusak
mysql> 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(kode_anggota,kode_buku,tanggal_pinjam) on update cascade on delete cascade,
    -> primary key(kode_anggota,kode_buku,tanggal_pinjam));

  
3)      Menghitung jumlah total semua koleksi perpustakaan

mysql> SELECT SUM(jumlah) as jumlah_total_koleksi_perpustakaan FROM buku;
 
4)      Menampilkan daftar buku dan penerbitnya, urut ascending berdasarkan abjad judul buku
mysql> select judul_buku,nama_penerbit from buku INNER JOIN penerbit USING(kode_penerbit) ORDER BY j
udul_buku;
        5)      Menampilkan daftar anggota sedang meminjam buku, urut ascending berdasarkan tanggal    pinjam 
mysql> SELECT nama_anggota, tanggal_pinjam from anggota INNER JOIN pinjam using(kode_anggota) ORDER BY tanggal_pinjam, nama_anggota;
 6)     Menampilkan daftar seluruh anggota yang pernah membayar terlambat mengembalikan buku, urut ascending berdasarkan abjad nama anggota  
mysql> select nama_anggota,tanggal_pinjam,tanggal_bayar from bayar_denda INNER JOIN anggota USING(kode_anggota) ORDER BY nama_anggota;
7) Menampilkan daftar seluruh anggota yang pernah membayar denda buku hilang, urut ascending berdasarkan abjad nama anggota 
mysql> select nama_anggota,tanggal_bayar,jumlah_denda from bayar_hilang INNER JOIN anggota USING(kode_anggota) ORDER BY nama_anggota;

8) Menampilkan daftar seluruh anggota yang pernah membayar denda_buku rusak, urut ascending berdasarkan abjad nama anggota
mysql> select nama_anggota,tanggal_bayar,jumlah_denda from bayar_rusak INNER JOIN anggota USING(kode _anggota) ORDER BY nama_anggota;

          
  

Tidak ada komentar:

Posting Komentar