Normalisasi adalah proses mengorganisir data dalam basis data untuk mengurangi redundansi (pengulangan data) dan memastikan integritas data. Dengan menggunakan normalisasi, kita dapat memecah tabel yang kompleks dan menghindari duplikasi data yang tidak perlu. Normalisasi dilakukan dengan menerapkan beberapa Bentuk Normal (Normal Forms) yang memiliki aturan-aturan tertentu.
Berikut adalah beberapa tingkatan normalisasi yang umum digunakan beserta contohnya:
1. First Normal Form (1NF)
Syarat: Data dalam tabel harus atomik, artinya setiap kolom hanya boleh menyimpan satu nilai, dan tidak boleh ada kolom yang berisi beberapa nilai dalam satu entri.
Contoh: Misalnya, kita punya tabel yang menyimpan data pesanan pelanggan, di mana beberapa produk yang dipesan tercatat dalam satu kolom:
Order_ID | Customer_Name | Products |
---|---|---|
1 | Andi | Laptop, Mouse |
2 | Budi | Keyboard, Monitor |
Tabel di atas tidak memenuhi 1NF karena kolom Products
berisi lebih dari satu nilai.
Solusi: Pisahkan produk menjadi baris-baris yang terpisah untuk setiap pesanan:
Order_ID | Customer_Name | Product |
---|---|---|
1 | Andi | Laptop |
1 | Andi | Mouse |
2 | Budi | Keyboard |
2 | Budi | Monitor |
Sekarang tabel tersebut memenuhi 1NF karena setiap kolom hanya berisi satu nilai per baris.
2. Second Normal Form (2NF)
Syarat: Tabel harus memenuhi 1NF, dan setiap atribut non-kunci harus bergantung secara penuh pada kunci utama (primary key).
Biasanya, 2NF diterapkan pada tabel dengan kunci komposit (kunci utama yang terdiri dari lebih dari satu kolom). Setiap kolom non-kunci harus bergantung pada semua bagian dari kunci komposit, bukan hanya sebagian.
Contoh:
Misalnya, kita punya tabel Order_Details
yang menyimpan informasi pesanan:
Order_ID | Product_ID | Customer_Name | Product_Price |
---|---|---|---|
1 | 101 | Andi | 10000 |
2 | 102 | Budi | 20000 |
Di sini, Order_ID
dan Product_ID
bersama-sama berfungsi sebagai kunci utama. Namun, kolom Customer_Name
dan Product_Price
hanya bergantung pada sebagian dari kunci (hanya Order_ID
atau Product_ID
), yang berarti tidak memenuhi 2NF.
Solusi: Pisahkan tabel menjadi dua tabel:
- Tabel
Orders
untuk menyimpan data pelanggan terkait setiap pesanan. - Tabel
Products
untuk menyimpan informasi produk.
Order_ID | Customer_Name |
---|---|
1 | Andi |
2 | Budi |
Product_ID | Product_Name | Product_Price |
---|---|---|
101 | Laptop | 10000 |
102 | Keyboard | 20000 |
Sekarang tabel tersebut memenuhi 2NF karena setiap atribut non-kunci bergantung sepenuhnya pada kunci utama.
3. Third Normal Form (3NF)
Syarat: Tabel harus memenuhi 2NF, dan semua kolom non-kunci harus bergantung langsung pada kunci utama, bukan pada kolom non-kunci lainnya (tidak ada dependensi transitif).
Contoh: Misalnya, kita memiliki tabel berikut yang menyimpan informasi karyawan dan departemennya:
Employee_ID | Employee_Name | Department_ID | Department_Name |
---|---|---|---|
1 | Andi | D01 | Sales |
2 | Budi | D02 | Marketing |
Tabel ini tidak memenuhi 3NF karena Department_Name
bergantung pada Department_ID
, bukan langsung pada Employee_ID
.
Solusi: Pisahkan menjadi dua tabel, satu untuk karyawan dan satu lagi untuk departemen.
Employee_ID | Employee_Name | Department_ID |
---|---|---|
1 | Andi | D01 |
2 | Budi | D02 |
Department_ID | Department_Name |
---|---|
D01 | Sales |
D02 | Marketing |
Sekarang tabel memenuhi 3NF karena semua kolom non-kunci bergantung langsung pada kunci utama masing-masing tabel.
4. Boyce-Codd Normal Form (BCNF)
BCNF adalah bentuk normal yang lebih ketat daripada 3NF. Suatu tabel dikatakan memenuhi BCNF jika memenuhi 3NF dan setiap determinan (kolom yang menentukan nilai kolom lain) adalah kunci kandidat.
BCNF tidak selalu diperlukan untuk semua kasus, tetapi biasanya digunakan jika kita ingin memastikan konsistensi data di tingkat yang lebih tinggi.
5. Bentuk Normal Lanjutan (4NF dan 5NF)
4NF dan 5NF jarang diterapkan dalam basis data komersial, kecuali untuk situasi data yang sangat kompleks.
4NF: Mengatasi ketergantungan multivalued (multivalued dependencies), yaitu kondisi di mana satu atribut tergantung pada lebih dari satu atribut.
5NF: Digunakan untuk menghilangkan ketergantungan join yang kompleks dan memastikan bahwa data hanya bisa dibagi berdasarkan hubungan asli tabel.
Ringkasan Proses Normalisasi
- 1NF: Hilangkan kolom dengan nilai berulang, pisahkan data ke dalam baris-baris terpisah.
- 2NF: Pastikan semua kolom non-kunci bergantung sepenuhnya pada kunci utama.
- 3NF: Hilangkan dependensi transitif antara kolom non-kunci.
- BCNF: Pastikan setiap determinan adalah kunci kandidat.
- 4NF dan 5NF: Memastikan integritas dalam data yang sangat kompleks.
Normalisasi membantu menjaga integritas data, meminimalkan pengulangan, dan membuat database lebih efisien. Namun, ada juga kelemahan karena proses ini dapat meningkatkan kompleksitas database, terutama dalam menggabungkan (join) tabel-tabel yang terpisah saat memerlukan data terintegrasi.
Comments
Post a Comment
Tulis Komentar, Pertanyaan, Masukan atau saran disini.