Kamis, 17 Januari 2013

TUGAS INDIVIDU (Review Mata Kuliah SMBD)


.  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


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 cascad
e,
    -> foreign key(kode_penerbit) references penerbit(kode_penerbit) on update cascade on delete cas
cade);



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 Pinjam
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 cascad
e,
    -> 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,t
anggal_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,t
anggal_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;