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, meng‐update
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
RANCANGAN STRUKTUR TABEL DATABASE YG
DIGUNAKAN
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
|