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
Posting Komentar