Jawaban untuk Soal Review SMBD
Selasa, 15 Januari 2013
0
komentar
JAWABAN UNTUK SOAL REVIEW SMBD
1.RANCANGAN STRUKTUR TABEL DATABASE YG DIGUNAKAN (DLM 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_kembali boleh 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
UNTUK:
1)
Membuat database
perpustakaan
Create datababase
dbperpustakaan;
2) Membuat tabel
database master & transaksi
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 (
kode_jenis_buku
char(4) not null unique primary key,
nama_jenis_buku
varchar(20) not null;
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 (
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);
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);
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 sum(jumlah) from buku;
4) MENAMPILKAN
DAFTAR BUKU DAN PENERBITNYA, URUT ASCENDING BERDASARKAN ABJAD JUDUL BUKU
Select judul_buku, nama_jenis_buku,
nama_bidang, nama_penulis_utama, nama_penerbit from buku join jenis
using(kode_jenis) join bidang using(kode_bidang) join penulis
using(kode_penulis) join penerbit using(kode_penerbit) order by judul_buku asc;
5) MENAMPILKAN
DAFTAR ANGGOTA SEDANG MEMINJAM BUKU,
URUT ASCENDING BERDASARKAN TANGGAL PINJAM
Select
kode_anggota, nama_anggota, alamat, telepon from anggota join pinjam
using(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
kode_anggota, nama_anggota, alamat, telepon from anggota join bayar_denda
using(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
kode_anggota, nama_anggota, alamat, telepon from anggota join bayar_hilang
using(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
kode_anggota, nama_anggota, alamat, telepon from anggota join bayar_rusak
using(kode_anggota) order by nama_anggota asc;
Baca Juga Yang Ini, Seru Loo!!
0 komentar:
Posting Komentar