TUGAS
REVIEW
SISTEM
MANAJEMEN BASIS DATA
Disusun oleh:
NAMA
:KALVIAN SOFIAN
NIM :
111051060
JURUSAN
TEKNIK INFORMATIKA
FAKULTAS
TEKNOLOGI INDUSTRI
INSTITUT
SAINS & TEKNOLOGI AKPRIND YOGYAKARTA
NOMOR 1 DAN 2
RANCANGAN STRUKTUR TABEL DATABASE SMAABC
(DLM BENTUK 3NF)
dan MENENTUKAN PRIMARY KEY & FOREIGN KEY
DATA MASTER
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: 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
|
3. 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
|
4. 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
|
-
|
-
|
5. Tabel: bidang
|
||||||
No
|
Nama Field
|
Tipe
|
Ukuran
|
Null
|
Default
|
Keterangan
|
1
|
kode_bidang
|
Char
|
4
|
No
|
-
|
Primary Key
|
2
|
nama_bidang
|
VarChar
|
20
|
No
|
-
|
-
|
6. 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
|
-
|
-
|
7. 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
|
-
|
-
|
8. Tabel: propinsi
|
||||||
No
|
Nama Field
|
Tipe
|
Ukuran
|
Null
|
Default
|
Keterangan
|
1
|
kode_propinsi
|
Char
|
2
|
No
|
-
|
Primary Key
|
2
|
nama_propinsi
|
VarChar
|
30
|
No
|
-
|
-
|
9. 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
|
10. 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
|
11. 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
|
-
|
-
|
12. 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
|
-
|
-
|
13. 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
|
-
|
-
|
14. Tabel: tanggal_libur
|
||||||
No
|
Nama Field
|
Tipe
|
Ukuran
|
Null
|
Default
|
Keterangan
|
1
|
tanggal_libur
|
Date
|
no
|
-
|
Primary Key
|
|
2
|
Keterangan_libur
|
Varchar
|
50
|
no
|
-
|
-
|
DATA TRANSAKSI
15. 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
|
-
|
-
|
16. 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
|
-
|
-
|
17. 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
|
18. 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
|
19. 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
|
3.MENGGAMBARKAN DIAGRAM KERELASIAN ANTAR TABEL
DATABASE
4.PERINTAH SQL DALAM MEMBUAT DATABASE
1) DEFINISI DATABASE
create database perpustakaan;
Definisi Tabel Dalam Database
use perpustakaan ;
2)MEMBUAT TABEL DATABASE MASTER DAN TRANSAKSI
Tabel: user
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: anggota
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(kode_kecamatan) on
update cascade on delete cascade);
Tabel: buku
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) 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) references jenis(kode_jenis)
on update cascade on delete cascade,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: jenis
create table jenis (kode_jenis_buku char(4) not null unique primary
key,nama_jenis_buku varchar(20) not null);
Tabel: bidang
create table bidang (kode_bidang char(4) not null unique primary
key,nama_bidang varchar(20) not null);
Tabel: penerbit
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(kode_kecamatan) on update cascade on delete cascade);
Tabel: penulis
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(kode_kecamatan) on update cascade on delete cascade);
Tabel: propinsi
create table propinsi (kode_propinsi char(2) not null unique primary
key,nama_propinsi varchar(30) not null);
Tabel: kabupaten
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
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: tarif_denda
create table tarif_denda (jumlah_hari_maksimal tinyint(3) not null unique
primary key,jumlah_denda mediumint(9) not null);
Tabel: tarif _hilang
create table tarif_hilang (harga_maksimal mediumint (9) not null unique
primary key,jumlah_denda mediumint(9) not null);
Tabel: tarif _rusak
create table tarif_rusak (harga_maksimal mediumint (9) not null unique
primary key,jumlah_denda mediumint(9) not null);
Tabel: tanggal_libur
create
table tanggal_libur (tanggal_libur date not null unique primary key,keterangan_libur varchar(50) not null);
Tabel: pinjam
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
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
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));
Tabel: bayar_hilang
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));
Tabel: bayar_rusak
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));
3)menghitung total koleksi buku
Select count(kode_buku) as
‘total_koleksi_buku ‘ from buku;
4)menampilkan
daftar buku dan penerbit secara ascending
select
judul_buku,nama_penerbit from buku,penerbit where buku.kode_penerb
it=penerbit.kode_penerbit
order by judul_buku asc;
5)Daftar
anggota pinjam buku secara ascending
Select nama_anggota as ‘DaftarAnggota_pinjambuku’ from anggota
,pinjam where anggota.kode_anggota=pinjam.kode_anggota order by tanggal_pinjam;
6)menampilkan
daftar seluruh anggota yang pernah membayar terlambat secara ascending berdasarkan abjad
Select nama_anggota as ‘Daftar_anggota_bayar_telat’ from
anggota,bayar_denda where anggota.kode_anggota=bayar_denda.kode_anggota order
by nama_anggota desc;
7)menampilkan
daftar seluruh anggota yang membaryar buku hilang berdasarkan abjad
Select nama_anggota as ‘Daftar_anggota_bayar_bukuhilang’
from anggota,bayar_hilang where anggota.kode_anggota=bayar_hilang.kode_anggota
order by nama_anggota desc;
8)daftar
seluruh anggota yang pernah membayar buku rusak .
Select nama_anggota as ‘Daftar_anggota_bayar_bukurusak’
from anggota,bayar_rusak where anggota.kode_anggota=bayar_rusak.kode_anggota
order by nama_anggota desc;