RANCANGAN
STRUKTUR TABEL DATABASE YG DIGUNAKAN (DLM BENTUK 3NF)
PRIMARY
KEY & FOREIGN KEY
PERINTAH SQL
1.create database perpustakaan;
2. membuat table;
·
create table user
(user_namevarchar(20) primary key not null,password varchar(20) not null,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 anggota
(kd_anggota char(6) primary key not null,nama_anggota varchar(50) not
null,alamat varchar(50) not null,telepon varchar(12),jenis_anggota
varchar(20));
·
create table jenis_buku
(kd_jenis_buku char(4) primary key not null,nama_jenis_buku varchar(30) not
null);
·
create table bidang (kd_bidang char(4) primary key not
null,nama_bidang varchar(30) not null);
·
create table penerbit
(kd_penerbit char(4) primary key not null,nama_penerbit varchar(30) not
null,alamat varchar(50) not null,kd_kecamatan char(6) not null,telepon
varchar(12)not null,email varchar(20));
·
create table propinsi
(kd_propinsi char(2) primary key not
null,nama_propinsi varchar(30) not null);
·
create table kabupaten
(kd_kabupaten char(6) primary key not null,nama_kabupaten varchar(30) not
null,kd_propinsi char(2) not null,foreign key(kd_propinsi) references propinsi
on update cascade on delete cascade);
·
create table kecamatan
(kd_kecamatan char(6) primary key not null,nama_kecamatan varchar(30) not
null,kd_kabupaten char(6) not null,foreign key(kd_kabupaten) references
kabupaten on update cascade on delete cascade);
·
create table buku (kd_buku
char(10) primary key not null,judul_buku varchar(35) not null,kd_jenis char(4)
not null,kd_bidang char(4) not null,kd_penulis char(4) not null,kd_penerbit
char(4) not null,jumlah int(10) 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 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);
·
create table penulis
(kd_penulis char(4) primary key not null,nama_penulis varchar(30) not
null,alamat varchar(50) not null,kd_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 pinjam (Kd_pinjam
char (6) primary key not null,kd_anggota char(6) not null,kd_buku char(10) not
null,tanggal_pinjam date not null,tanggal _kembali date not null,foreign
key(kd_anggota) references anggota on update cascade on delete cascade,foreign
key(kd_buku) references buku on update cascade on delete cascade,primary
key(kd_anggota, kd_buku, tanggal_pinjam);
·
create table kembali (Kd_pinjam
char(6),Kd_kembali char(6),kd_anggota char(6) not null,kd_buku char(10) not
null,tanggal_pinjam date not null,tanggal_ kembali date not null,foreign
key(kd_anggota, kd_buku, tanggal_pinjam) references pinjam on update cascade on
delete cascadeprimary key(kd_anggota, kd_buku, tanggal_pinjam);
·
create table bayar_denda
(kd_anggota char(6) not null,kd_buku char(10) not null,
tanggal_pinjam date not null,tanggal_kembali date not null,
jumlah_denda
numeric(9),foreign key(kd_anggota, kd_buku, tanggal_pinjam) references kembali
on update cascade on delete cascade primary key(kd_anggota, kd_buku,
tanggal_pinjam);
·
create table bayar_hilang
(kd_pinjam char(6) not null,kd_anggota char(10) not null,
kd_buku
char(6),tanggal_pinjam date not null,tanggal_bayar date not null,jumlah numeric(9), foreign key(kd_pinjam,kd_anggota,
kd_buku, tanggal_pinjam) references kembali on update cascade on delete cascade
primary key(kd_anggota, kd_buku, tanggal_pinjam);
3. select sum(jumlah) as jumlahsemuabuku
from buku;
4. select judul_buku, nama_penerbit from penerbit
left join buku on
buku.kode_penerbit=penerbit.kode_penerbit
left join pinjam on buku.kode_buku=pinjam.kode_buku order by tanggal_pinjam;
5. select* from anggota left join pinjam on
anggota.kode_anggota=pinjam.kode_anggota where pinjam.kode_anggota=not null
order by tanggal_pinjam;
6. select
anggota.kode_anggota,nama_anggota, alamat, kode_kecamatan, telepon, email,
tgl_mulai_anggota, jenis_anggota, status_anggota from anggota left join
bayar_denda on anggota.kode_anggota=bayar_denda.kode_anggota where
bayar_denda.kode_anggota=not null order by nama_anggota;
7. select
anggota.kode_anggota,nama_anggota, alamat, kode_kecamatan, telepon, email,
tgl_mulai_anggota, jenis_anggota, status_anggota from anggota left join
bayar_hilang on anggota.kode_anggota=bayar_hilang.kode_anggota where
bayar_hilang.kode_anggota=not null order by nama_anggota;
8. select
anggota.kode_anggota,nama_anggota, alamat, kode_kecamatan, telepon, email,
tgl_mulai_anggota, jenis_anggota, status_anggota from anggota left join bayar_rusak
on anggota.kode_anggota=bayar_rusak.kode_anggota where
bayar_rusak.kode_anggota=not null order by nama_anggota;