Basis Data Praktikum 14 (Studi Kasus): Normalisasi Database Perpustakaan

A.    Bentuk Tidak Normal

Tabel tb_pinjam tersebut dapat dikategorikan sebagai tabel dalam bentuk tidak normal karena adanya pengulangan data pada beberapa baris. Pengulangan data terjadi pada atribut Nm_peminjam, Jm_hr_pj, Biaya_pinjam, Id_buku, Nm_buku, Penerbit, dan Thn_terbit.

Pada tabel tersebut, terlihat bahwa beberapa atribut seperti Nm_peminjam, Jm_hr_pj, Biaya_pinjam, Id_buku, Nm_buku, Penerbit, dan Thn_terbit diulang pada baris yang memiliki Id_pinjam yang sama. Hal ini menunjukkan adanya redundansi data yang tidak perlu.

Pengulangan data pada tabel tersebut dapat menyebabkan masalah seperti pemborosan ruang penyimpanan dan kesulitan dalam memperbarui data. Selain itu, dapat menyebabkan ketidaksesuaian atau inkonsistensi pada data jika terjadi perubahan pada nilai yang diulang.

Untuk mengatasi bentuk tidak normal tersebut, normalisasi tahap kedua dan ketiga dapat diterapkan dengan memisahkan data yang berkaitan ke dalam tabel terpisah dan menggunakan kunci asing untuk menghubungkan antar tabel. Dengan melakukan normalisasi, kita dapat menghilangkan redundansi data dan memperbaiki struktur tabel agar lebih efisien dan konsisten.

B.     Bentuk Normal Pertama (1NF)


Tabel tb_pinjam tersebut dapat dikategorikan sebagai tabel dalam bentuk normal pertama atau disebut juga sebagai 1NF (First Normal Form). Dalam 1NF, setiap sel dalam tabel hanya berisi satu nilai dan tidak ada pengulangan data pada baris atau kolom.

Pada tabel tb_pinjam yang diberikan, setiap atribut berada dalam kolom tersendiri, dan setiap baris merepresentasikan entitas dengan uniknya. Tidak ada pengulangan data pada baris atau kolom, sehingga setiap sel hanya berisi satu nilai.

Dalam bentuk normal pertama (1NF), tidak ada pengulangan data pada atribut Nm_peminjam, Jm_hr_pj, Biaya_pinjam, Id_buku, Nm_buku, Penerbit, atau Thn_terbit. Setiap baris mewakili entitas dengan uniknya dan tidak ada campuran nilai-nilai di dalam satu sel.

Penting untuk dicatat bahwa meskipun tabel tb_pinjam telah memenuhi 1NF, mungkin masih ada ruang untuk normalisasi lebih lanjut jika ada ketergantungan fungsional yang dapat diidentifikasi antara atribut-atribut tersebut. Normalisasi tahap selanjutnya, seperti normalisasi tahap kedua (2NF) atau ketiga (3NF), dapat diterapkan jika diperlukan.

C.    Bentuk Normal Ke-dua (2NF)

Untuk mencapai bentuk normal kedua (2NF), kita dapat melakukan normalisasi dengan membagi tabel-tabel tersebut menjadi tabel-tabel terpisah dan memperhatikan ketergantungan fungsional antar atribut. Berikut adalah solusi untuk mencapai bentuk normal kedua (2NF):




Dengan normalisasi ini, kita telah memisahkan atribut-atribut yang memiliki ketergantungan fungsional sebagian pada kunci utama menjadi tabel terpisah. Tabel tb_pinjam_detail menghubungkan Id_pinjam dengan Id_buku dan menyimpan informasi terkait Jm_hr_pj dan Biaya_pinjam. Tabel tb_buku berisi informasi terkait buku berdasarkan Id_buku.

Dengan normalisasi ini, tabel tb_pinjam dan tb_pinjam_detail memenuhi bentuk normal kedua (2NF), karena tidak ada atribut yang sebagian bergantung pada kunci utama. Tabel tb_buku juga tetap memenuhi bentuk normal kedua (2NF), karena tidak ada ketergantungan fungsional sebagian pada kunci utama.

Penting untuk dicatat bahwa normalisasi bisa berbeda tergantung pada ketergantungan fungsional yang ada dalam data yang sebenarnya. Solusi di atas merupakan contoh normalisasi berdasarkan informasi yang diberikan dalam tabel-tabel tersebut.

D.    Bentuk Normal Ke-tiga (3NF)

Untuk melakukan normalisasi tahap ketiga (3NF) dari tabel-tabel tersebut, kita perlu memastikan bahwa tidak ada ketergantungan fungsional transitif di antara atribut-atribut non-kunci. Berikut adalah solusi normalisasi tahap ketiga (3NF) dari tabel-tabel yang telah diuraikan sebelumnya:





Dalam normalisasi tahap ketiga (3NF), kita memisahkan atribut yang tidak memiliki ketergantungan fungsional transitif dari atribut-atribut lainnya.

Pada normalisasi di atas, atribut Jm_hr_pj di dalam tabel tb_pinjam_detail yang memiliki ketergantungan fungsional dengan atribut Biaya_pinjam dipisahkan ke dalam tabel tb_biaya_pinjam. Dengan demikian, tidak ada ketergantungan fungsional transitif antara atribut non-kunci dalam tabel-tabel yang dihasilkan.

Tabel tb_pinjam, tb_pinjam_detail, tb_biaya_pinjam, dan tb_buku telah memenuhi bentuk normal ketiga (3NF) karena tidak ada ketergantungan fungsional transitif di antara atribut-atribut non-kunci.

 

Komentar