SCHEMA DATABASE
DENGAN DDL
1) DEFINISI DATABASE
create database dbperpustakaan;
2) DEFINISI TABEL DALAM DATABASE
use dbperpustakaan
create table user (
user_namevarchar(5) not nullunique
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_liburdate not nullunique
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 deletecascade);
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 buku.kode_buku,
penerbit.nama_penerbit FROM buku JOIN penerbit ON buku.kode_penerbit =
penerbit.kode_penerbit ORDER BY buku.judul_buku ASC;
5) Menampilkan daftar anggota
sedang meminjam buku, urut ascending berdasarkan tanggal pinjam
SELECT anggota.kode_anggota,
anggota.nama_anggota, anggota.alamat_anggota FROM anggota JOIN pinjam ON
anggota.kode_anggota = pinjam.kode_anggota ORDER BY pinjam.tanggal_pinjam;
6) Menampilkan daftar seluruh
anggota yang pernah membayar terlambat mengembalikan buku, urut ascending
berdasarkan abjad nama anggota
SELECT anggota.kode_anggota,
anggota.nama_anggota, anggota.alamat_anggota FROM anggota JOIN bayar_denda ON
anggota.kode_anggota = bayar_denda.kode_anggota ORDER BY anggota.nama_anggota
ASC;
7) Menampilkan daftar seluruh
anggota yang pernah membayar denda buku hilang, urut ascending berdasarkan
abjad nama anggota
SELECT anggota.kode_anggota,
anggota.nama_anggota, anggota.alamat_anggota FROM anggota JOIN bayar_hilang ON
anggota.kode_anggota = bayar_hilang.kode_anggota ORDER BY anggota.nama_anggota
ASC;
8) Menampilkan daftar seluruh
anggota yang pernah membayar denda buku rusak, urut ascending berdasarkan abjad
nama anggota
SELECT anggota.kode_anggota,
anggota.nama_anggota, anggota.alamat_anggota FROM anggota JOIN bayar_rusak ON anggota.kode_anggota =
bayar_rusak.kode_anggota ORDER BY anggota.nama_anggota ASC;
Tidak ada komentar:
Posting Komentar