Contoh Perancangan Database Perpustakaan Dengan Contoh Mysql
Perancangan contoh database perpustakaan dibuat untuk membangun sebuah sistem informasi perpustakaan yang mencakup peminjaman buku, pencatatan peminjaman buku, mencatat member perpustakaan, pengelompokan buku per kategori, dan lain sebagainya. Sistem informasi perpustakaan akan membantu staf perpustakaan mencari informasi seperti jumlah salinan yang tersedia setiap buku, daftar buku yang termasuk dalam kategori tertentu.
Di sini saya akan belajar membuat database perpustakaan sederhana di lingkungan kampus yang output nya dari tutorial ini membuat tabel database perpustakaan, ERD (Entity Relationship Diagram), skema database, dan struktur atribut tipe basis data untuk database perpustakaan.
Menyiapkan Tabel Peminjaman Perpustakaan
-
Tabel book : Tabel book untuk menyimpan nama nama judul dari setiap buku.
id
: kolom ini berisi unik data dan Primary key.title
: title yang akan di isi judul buku misalnya, “Algoritma dan Pemrograman dalam Bahasa Pascal dan C”.
Deskripsi Atribut :Kolom Tipe Keterangan id int Primary Key, Auto Increment title varchar Not Null
-
Tabel author : Tabel ini untuk menyimpan nama penulis.
id
: kolom ini berisi unik data dan Primary key.name
: nama pengarang, misalnya “Rinaldi Munir”
Deskripsi Atribut :Kolom Tipe Keterangan id int Primary Key, Auto Increment name varchar Not Null
-
Tabel book_author : Setiap buku pasti memiliki penulis dan satu penulis memiliki beberapa buku, setiap buku ada beberapa penulis, maka kita buat tabelnya
book_id
: kolom ini disediakan untuk tempatid
dari tablebook
istilahnya Foreign key (kunci tamu).author_id
: Foreign key dari tabelauthor
.
Deskripsi Atribut :Kolom Tipe Keterangan book_id int Foreign key author_id int Foreign key
-
Tabel category : Banyak sekali kategori di buku maka kita bikin tabel nya tujuannya agar mudah ketika kita filter by kategori
id
: kolom ini berisi unik data dan Primary key.name
: nama kategori, misalnya “Komputer dan internet”
Deskripsi Atribut :Kolom Tipe Keterangan id int Primary Key name varchar Not Null
-
Tabel publisher : Setiap buku pasti memiliki publisher atau penerbit, di sini kita kelompokkan buku dari nama penerbit untuk memudahkan pencarian.
id
: kolom ini berisi unik data dan Primary key yang nantinya akan bertamu ke tabelbook_copy
.name
: nama penerbit, misalnya “Informatika”
Deskripsi Atribut :Kolom Tipe Keterangan id int Primary Key name varchar Not Null
-
Tabel book_copy : Biasanya buku memiliki salinan dan tidak hanya memiliki satu salinan saja maka agar memudahkan untuk dicari dan pengarsipan untuk datanya kita bikin tabelnya.
id
: kolom ini berisi unik data dan Primary key.year_published
: tahun terbit berisikan tahun seperti “2014”book_id
: ini menampung dataid
dari tabelbook
publisher_id
: ini menampung dataid
dari tabelpublisher
Deskripsi Atribut :Kolom Tipe Keterangan id Primary Key year_published int Not Null book_id int Foreign Key,Not Null publisher_id int Foreign Key,Not Null
-
Tabel member_account : Di tabel member_account menyimpan data member atau pelanggan disebutnya untuk keperluan informasi pelanggan dan statusnya sebagai member.
id
: berisikan data unik dan Primary Keyfirst_name
: nama awal memberlast_name
: nama akhir memberemail
: email penggunastatus
: status untuk aktif dan tidak aktif nanti jadi tipenya enum
Deskripsi Atribut :Kolom Tipe Keterangan id int Primary Key first_name varchar Not Null last_name varchar Not Null email varchar Not Null status boolean true
orfalse
-
Tabel checkout : Di tabel di checkout tujuannya untuk menyimpan kapan buku dipinjam dan sampai kapan buku akan dikembalikan.
id
: berisikan data unik dan Primary Keystart_time
: diisi pakaitimestamp
nantinya di mysql tapi tipenyadate
end_time
: diisi pakaitimestamp
nantinya di mysql tapi tipenyadate
book_copy_id
: berisi Primary Key dari tabelbook_copy
member_account_id
: berisi Primary Key dari tabelbook_copy
is_returned
: ini kolom menampung status pengembalian buku dan isinya booleantrue
jika sudah kembali danfalse
jika belum dikembalikan
Deskripsi Atribut :Kolom Tipe Keterangan id int Foreign key start_time date Not Null end_time date Not Null book_copy_id int Foreign key,Not Null member_account_id int Foreign key,Not Null is_returned boolean true
orfalse
, Not Null
-
Tabel hold :
Di tabel di hold kelihatannya sama dengan tabel checkout yang membedakannya adanya kolomis_returned
, fungsi dari tabel ini sebagai pembanding dengan tabelcheckout
, dan mencatat seberapa member meminjam buku.id
: berisikan data unik dan Primary Key.start_time
: diisi pakaitimestamp
nantinya di mysql tapi tipenyadate
.end_time
: diisi pakaitimestamp
nantinya di mysql tapi tipenyadate
.book_copy_id
: berisi Primary Key dari tabelbook_copy
.member_account_id
: berisi Primary Key dari tabelbook_copy
.
Deskripsi Atribut :Kolom Tipe Keterangan id int Foreign key start_time date Not Null end_time date Not Null book_copy_id int Foreign key,Not Null member_account_id int Foreign key,Not Null
Skema Database Perpustakaan
Script Query Mysql Perpustakaan
CREATE DATABASE student_library;
USE student_library;
CREATE TABLE category (
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
name VARCHAR(200) NOT NULL
);
CREATE TABLE book (
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200) NOT NULL,
category_id INT NOT NULL,
CONSTRAINT fk_book_category_id FOREIGN KEY (category_id) REFERENCES category (id)
);
CREATE TABLE author (
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
name VARCHAR(200) NOT NULL
);
CREATE TABLE book_author (
book_id INT NOT NULL,
author_id INT NOT NULL,
CONSTRAINT fk_book_author_book_id FOREIGN KEY (book_id) REFERENCES book (id),
CONSTRAINT fk_book_author_author_id FOREIGN KEY (author_id) REFERENCES author (id)
);
CREATE TABLE publisher (
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
name VARCHAR(200) NOT NULL
);
CREATE TABLE book_copy (
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
year_published INT(4) NOT NULL,
book_id INT NOT NULL,
publisher_id INT NOT NULL,
CONSTRAINT fk_book_copy_book_id FOREIGN KEY (book_id) REFERENCES book (id),
CONSTRAINT fk_book_copy_publisher_id FOREIGN KEY (publisher_id) REFERENCES publisher (id)
);
CREATE TABLE member_account (
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
first_name VARCHAR(200) NOT NULL,
last_name VARCHAR(200) NOT NULL,
email VARCHAR(200) NOT NULL,
status ENUM('ACTIVED', 'DEACTIVATED') NOT NULL
);
CREATE TABLE checkout (
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
start_time DATE NOT NULL,
end_time DATE NOT NULL,
book_copy_id INT NOT NULL,
member_account_id INT NOT NULL,
is_returned BOOLEAN DEFAULT false,
CONSTRAINT fk_checkout_book_copy_id FOREIGN KEY (book_copy_id) REFERENCES book_copy (id),
CONSTRAINT fk_checkout_member_account_id FOREIGN KEY (member_account_id) REFERENCES member_account (id)
);
CREATE TABLE hold (
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
start_time DATE NOT NULL,
end_time DATE NOT NULL,
book_copy_id INT NOT NULL,
member_account_id INT NOT NULL,
CONSTRAINT fk_hold_book_copy_id FOREIGN KEY (book_copy_id) REFERENCES book_copy (id),
CONSTRAINT fk_hold_member_account_id FOREIGN KEY (member_account_id) REFERENCES member_account (id)
);
Kesimpulan
dengan membuat skema database perpustakaan kita bisa membuat sistem informasi perpustakaan yang mempunyai fitur pencarian dari kategori, penerbit, dan status dipinjam oleh member yang mana. jika masih kurang mengenai skema database perpustakaan bisa tulis pertanyaan dibawah. terima kasih 😁