PRODI TEKNIK INFORMATIKA, JURUSAN TEKNIK INFORMATIKA, FTI, IST AKPRIND YOGYAKARTA
UJIAN TENGAH SEMESTER GANJIL TA. 2012/2013
Mata Ujian : Sistem Manajemen Basis Data (Kelas A dan B) Semester / SKS : III / 3
Hari, Tanggal : Selasa, 20 November 2012 Jam : 13.00-15.00 WIB (120 menit) Dosen : Edhy Sutanta, S.T., M.Kom.
Sifat : Open Book (Hanya Boleh Membuka Buku Catatan Milik
Sendiri)
PETUNJUK:
Bacalah dengan cermat soal di bawah ini
Kerjakan dengan JELAS, LENGKAP, dan URUT
Jawaban CURANG tidak akan dikoreksi & mendapat skor ENOL
SOAL:
Soal ini terkait dengan Sistem Pengolahan Data Perpustakaan SMA XYZ
(SPDP). SPDP adalah sebuah aplikasi web based yang melibatkan 6 (enam) pengguna, yaitu: 1) Administrator, 2) Petugas, 3) Anggota, 4) Kepala
Perpustakaan, 5). Kepala Sekolah, serta 6) Pengunjung dengan peran sbb:
Administrator berperan mengelola data dan hak ases user, dan berwenang mengelola seluruh data master.
Petugas berperan melayani dan mengelola data transaksi peminjaman,
pengembalian, pembayaran denda keterlambatan pengembalian,
penggantian 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 atau hilang. Secara rutin Kepala Perpustakaan menerima laporan yang disusun oleh Petugas perpustakaan, di samping itu ia juga dapat sewaktu-waktu meminta informasi dan/atau laporan
Kepala Sekolah menerima laporan yang disusun oleh Petugas perpustakaan,
di samping itu ia juga dapat sewaktu-waktu meminta informasi dan/atau laporan
Pengunjung hanya dapat melakukan pencarian katalog dan membaca kolksi
perpustakaan di ruang perpustakaan
Data master sistem perpustakaan meliputi data
user
, dataanggota
, databuku
, datajenis
buku, databidang
ilmu buku, datapenerbit
, datapenulis
, datapropinsi
, datakabupaten
, datakecamatan
, datatarip denda
tarif_denda, denda_hilang, denda_rusak
Berdasarkan keterangan tersebut di atas, buatlah;
Gambarkan ER-D untuk SPDP secara lengkap
Buatlah rancangan struktur tabel database yang digunakan
(dalam bentuk 3NF)
Tentukan primary key & foreign key (jika ada) pada setiap struktur
tabel database yang digunakan (dalam bentuk 3NF)
Tuliskan schema dengan bahasa SQL untuk setiap tabel database
yang digunakan (dalam bentuk 3NF)
[Skor masing-masing jawaban maksimal: 20]
selamat mengerjakan, semoga berhasil…!!!
PEMBAHASAN SOAL UTS
CATATAN: Khusus untuk koleksi berupa buku, rek buku tidak dicatat, kode_anggota berupa nomor urutan
DFD
DFD Level Context
a Administrator
b Petugas
c Anggota
d Kepala Perpustakaan
e Kepala Sekolah
f Pengunjung 1
SPDP
dt_tarip denda dt_user
dt_master
dt_transaksi
laporan
laporan
DFD Level 1
Administrator D1 tbl_user
d Kepala Perpustakaan
D2 tbl_tgl_libur
D3 tbl_tarif_denda
D4 tbl_tarif_hilang
D5 tbl_tarif_rusak b
Petugas
D6 tbl_anggota
D7 tbl_jenis
D8 tbl_bidang
D9 tbl_penerbit
D10 tbl_penulis
D11 tbl_propinsi
D12 tbl_kabupaten
D13 tbl_kecamatan D14 tbl_pinjam
D15 tbl_kembali c Anggota
D16 tbl_bayar_denda
D17 tbl_bayar_hilang
D18 tbl_bayar_rusak
f Pengunjung
e Kepala Sekolah D19 tbl_buku
rec_bayar_rusak
dt_user rec_user
dt_tanggal_libur dt_master rec_anggota
HIPO (VTOC)
OD; DD
0 SPDP1
Input Data User
2
Input Data Master
2.1. Input Data Master Tanggal
Libur 2.2. Input Data Master Tarif Denda
2.3. Input Data Master Tarif Hilang
2.4. Input Data Master Tarif Rusak
2.5. Input Data Master Anggota 2.6. Input Data Master Jenis 2.7. Input Data Master Bidang 2.8. Input Data Master Penerbit 2.9. Input Data Master Pengarang
2.10. Input Data Master Propinsi 2.11. Input Data Master Kabupaten 2.12. Input Data Master Kecamatan
3
Proses Transaksi
3.1. Proses Transaksi Pinjam
3.2. Proses Transaksi Kembali
3.3. Proses Transaksi Bayar
Denda 3.4. Proses Transaksi Bayar
Hilang 3.5. Proses Transaksi Bayar
Rusak
4
Output Laporan
4.1. Laporan Detail 4.1.1. Laporan Detail Data Master
4.1.2. Laporan Detail Data
Transaksi 4.2. Laporan Rekapitulasi
4.2.1. Laporan Rekap Data Master
4.2.2. Laporan Rekap Data
Transaksi 4.3. Laporan Grafis
4.3.1. Laporan Grafis Data Master
4.3.2. Laporan Grafis Data
Transaksi 4.4. Informasi
4.4.1. Informasi Data Master
MENU UTAMA DAN SUB MENU SISTEM APLIKASI
0 SPDP
1 Input Data User
2 Input Data Master
2.1. Input Data Master Tanggal
Libur 2.2. Input Data Master Tarif Denda
2.3. Input Data Master Tarif Hilang
2.4. Input Data Master Tarif Rusak
2.5. Input Data Master Anggota 2.6. Input Data Master Jenis 2.7. Input Data Master Bidang 2.8. Input Data Master Penerbit 2.9. Input Data Master Pengarang
2.10. Input Data Master Propinsi 2.11. Input Data Master Kabupaten 2.12. Input Data Master Kecamatan
3 Proses Transaksi
3.1. Proses Transaksi Pinjam
3.2. Proses Transaksi Kembali
3.3. Proses Transaksi Bayar
Denda 3.4. Proses Transaksi Bayar
Hilang 3.5. Proses Transaksi Bayar
Rusak
4 Output Laporan
4.1. Laporan Detail 4.1.1. Laporan Detail
Data Master 4.1.2. Laporan Detail
Data Transaksi 4.2. Laporan Rekapitulasi
4.2.1. Laporan Rekap Data Master
4.2.2. Laporan Rekap Data
Transaksi 4.3. Laporan Grafis
4.3.1. Laporan Grafis Data Master
4.3.2. Laporan Grafis Data
Transaksi 4.4. Informasi
4.4.1. Informasi Data Master (Tertentu) 4.4.2. Infomasi Data Transaksi (Tertentu)
5 Utilitas
5.1. Backup
5.2. Restore
5.3. Seting Sistem
6 Help
6.1. Indeks
6.2. Konten
JAWABAN SOAL UTS
ERD
o
Entitas, Atribut, Kerelasian, Jenis Kerelasian (Catatan: Atribut & Jenis kerelasian
tidak ditampilkan)
meminjam
menempati
membawahi
Propinsi Kabupaten
membawahi
Kecamatan Bidang
mempunyai mempunyai
Denda_rusak Denda
Denda_hilang
Jenis
menempati menempati
Penerbit menerbitkan Penulis mengembalikan menulis
Buku
User
RANCANGAN STRUKTUR TABEL DATABASE YG DIGUNAKAN
(DLM BENTUK 3NF)
PRIMARY KEY & FOREIGN KEY
1. Tabel: user
No Nama Field Tipe Ukura
n Null Default Keterangan
1 user_name VarCha
r 20 No - Primary Key
2 password VarCh ar
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 Ukura
n Null Default Keterangan
1 tanggal_libur Date no - Primary Key
2 Keterangan_lib
ur Varchar 50 no -
-3. Tabel: tarif_denda
No Nama Field Tipe Ukura
n Null Default Keterangan
1 jumlah_hari_maks
imal Num 3 No - Primary Key
2 jumlah_denda Num 7 No -
-4. Tabel: tarif _hilang
No Nama Field Tipe Ukura n
Nul l
Default Keterangan
1 harga_maksim
al Num 7 No - Primary Key
2 jumlah_denda Num 7 No -
-5. Tabel: tarif _rusak
No Nama Field Tipe Ukura n
Nul l
Default Keterangan
1 harga_maksim
al Num 7 No - Primary Key
2 jumlah_denda Num 7 No -
-6. Tabel: anggota
No Nama Field Tipe Ukura n
1 kode_anggot a
Char 6 no - Primary Key
2 nama_anggot
a VarChar 100 no -
-3 alamat VarCh ar
100 no -
-4 kode_kecama tan
Char 6 no - Foreign Key
5 telepon VarCh
ar 12 yes -
-6 email VarCh ar
20 yes -
-7 tgl_mulai_an ggota
-8 jenis_anggot a
Char 1 no 2 1 = guru/ karyawan; 2 = siswa
9 status_anggo ta
Char 1 no 2 1 = aktif; 2 = tidak aktif
7. Tabel: jenis
No Nama Field Tipe Ukura n
1 kode_jenis_buk
u Char 4 No - Primary Key
2 nama_jenis_bu
ku VarChar 20 No -
-8. Tabel: bidang
No Nama Field Tipe Ukura
n Null Default Keterangan
1 kode_bidang Char 4 No - Primary Key
2 nama_bidang VarCha
r 20 No -
-9. Tabel: penerbit
No Nama Field Tipe Ukura n
Nul l
Default Keterangan
1 kode_penerbit Char 4 No - Primary Key
2 nama_penerbit VarCha
r 30 No - -3 alamat VarCha
r 100 no - -4 kode_kecamat
an
Char 6 no - Foreign Key
5 telepon VarCha
r 12 yes - -6 email VarCha
r 20 yes -
-10. Tabel: penulis
No Nama Field Tipe Ukura
n Null Default Keterangan
1 kode_penulis Char 4 No - Primary Key
2 nama_penulis VarCh ar
100 No -
-3 alamat VarCh
ar 100 no -
-4 kode_kecamata
n Char 6 no - Foreign Key
5 telepon VarCh ar
12 yes -
-6 email VarCh
ar
20 yes -
-11. Tabel: propinsi
No Nama Field Tipe Ukura n
1 kode_propinsi Char 2 No - Primary Key
2 nama_propinsi VarCha r
-12. Tabel: kabupaten
No Nama Field Tipe Ukura n
1 kode_kabupat
en Char 4 No - Primary Key
2 nama_kabupat
en VarChar 30 No -
-3 kode_propinsi Char 2 No - Foreign Key
13. Tabel: kecamatan
No Nama Field Tipe Ukura
n Null Default Keterangan
1 kode_kecamat
an Char 6 No - Primary Key
2 nama_kecama tan
VarCha r
30 No -
-3 kode_kabupat en
Char 4 No - Foreign Key
14. Tabel: pinjam
Catatan: kode_pinjam boleh tidak digunakan
No Nama Field Tipe Ukura
n 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_kemb
ali Date N0 -
-15. Tabel: kembali Catatan:
kode_kembali boleh tidak digunakan
jika tabel pinjam tidak menggunakan kode_pinjam, maka harus ada kode_anggota+kode_buku+tanggal_pinjam
No Nama Field Tip e
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_pinja
m Date No Primary Key / Foreign Key
6 tanggal_kemb ali
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 Ukura
n
1 kode_kembali Primary Key / Foreign Key
2 kode_anggota Char 6 No - Primary Key / Foreign Key
Key
4 tanggal_pinja
m Date No Primary Key / ForeignKey
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 Ukura n
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_pinja
m 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 Ukura n
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_pinja
m 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 Ukura n
1 kode_buku Char 10 No - Primary Key
2 Judul_buku VarCh ar
100 No -
-3 kode_jenis Char 4 No - Foreign Key
4 kode_bidang Char 4 No - Foreign Key
5 kode_penulis_u tama
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_halama
n Num 1 No -
-12 edisi Char 1 No 1
-13 cetakan_ke Char 1 No 1
SCHEMA DATABASE DENGAN DDL
o DEFINISI DATABASE
create database dbperpustakaan;
o DEFINISI TABEL DALAM DATABASE
use dbperpustakaan
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’));
create table tanggal_libur (
tanggal_libur date not null unique primary key, keterangan_libur varchar(50) not null);
create table tarif_denda (
jumlah_hari_maksimal tinyint(3) not null unique primary key, jumlah_denda mediumint(9) not null);
create table tarif_hilang (
harga_maksimal mediumint (9) not null unique primary key, jumlah_denda mediumint(9) not null);
create table tarif_rusak (
harga_maksimal mediumint (9) not null unique primary key, jumlah_denda mediumint(9) not null);
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 on update cascade on delete cascade;
create table jenis (
create table bidang (
kode_bidang char(4) not null unique primary key, nama_bidang varchar(20) not null;
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;
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;
create table propinsi (
kode_propinsi char(2) not null unique primary key, nama_propinsi varchar(30) not null;
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;
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;
create table pinjam (
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);
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);
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);
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);
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);
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,