Contoh Perancangan Database Perpustakaan Dengan Contoh Mysql

Contoh Perancangan Database Perpustakaan Dengan Contoh Mysql
Konten Halaman

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

  1. 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
  2. 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
  3. 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 tempat id dari table book istilahnya Foreign key (kunci tamu).
    • author_id: Foreign key dari tabel author.
      Deskripsi Atribut :
      Kolom Tipe Keterangan
      book_id int Foreign key
      author_id int Foreign key
  4. 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
  5. 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 tabel book_copy.
    • name : nama penerbit, misalnya “Informatika”
      Deskripsi Atribut :
      Kolom Tipe Keterangan
      id int Primary Key
      name varchar Not Null
  6. 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 data id dari tabel book
    • publisher_id : ini menampung data id dari tabel publisher
      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
  7. 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 Key
    • first_name : nama awal member
    • last_name : nama akhir member
    • email : email pengguna
    • status : 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 or false
  8. Tabel checkout : Di tabel di checkout tujuannya untuk menyimpan kapan buku dipinjam dan sampai kapan buku akan dikembalikan.

    • id : berisikan data unik dan Primary Key
    • start_time : diisi pakai timestamp nantinya di mysql tapi tipenya date
    • end_time : diisi pakai timestamp nantinya di mysql tapi tipenya date
    • book_copy_id : berisi Primary Key dari tabel book_copy
    • member_account_id : berisi Primary Key dari tabel book_copy
    • is_returned : ini kolom menampung status pengembalian buku dan isinya boolean true jika sudah kembali dan false 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 or false, Not Null
  9. Tabel hold :
    Di tabel di hold kelihatannya sama dengan tabel checkout yang membedakannya adanya kolom is_returned, fungsi dari tabel ini sebagai pembanding dengan tabel checkout, dan mencatat seberapa member meminjam buku.

    • id : berisikan data unik dan Primary Key.
    • start_time : diisi pakai timestamp nantinya di mysql tapi tipenya date.
    • end_time : diisi pakai timestamp nantinya di mysql tapi tipenya date.
    • book_copy_id : berisi Primary Key dari tabel book_copy.
    • member_account_id : berisi Primary Key dari tabel book_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

Skema Database Perpustakaan di phpmyadmin

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 😁