Normalisasi dalam ERD (Entity-Relationship Diagram)
Normalisasi dalam ERD (Entity-Relationship Diagram) adalah proses desain
database yang bertujuan untuk mengorganisasi data dalam basis data relasional
dengan cara yang optimal, efisien, dan mengurangi redundansi data. Normalisasi
menghindari duplikasi data dan memastikan bahwa hubungan antara entitas (tabel)
dalam database terstruktur dengan baik. Tujuan utama normalisasi adalah untuk
mencapai tiga hal utama:
- Mengurangi
Redundansi Data: Normalisasi mengidentifikasi dan menghilangkan duplikasi
data yang tidak perlu dalam database. Ini mengurangi penggunaan
penyimpanan dan memastikan bahwa data konsisten dan akurat.
- Meningkatkan
Efisiensi: Normalisasi memungkinkan database untuk memproses dan mengambil
data dengan lebih cepat, karena tidak perlu mencari data yang tersebar di
seluruh tabel.
- Mempertahankan
Integritas Data: Normalisasi membantu dalam mempertahankan integritas
referensial, yang memastikan bahwa ketergantungan antara entitas (tabel)
adalah konsisten dan tidak melanggar integritas data.
Normalisasi dalam ERD mengikuti serangkaian aturan yang dikenal sebagai
bentuk normal. Ada berbagai bentuk normal yang berbeda, yang disebut sebagai
"normalisasi tingkat pertama" hingga "normalisasi tingkat
kelima" (1NF hingga 5NF). Proses normalisasi biasanya dimulai dengan
normalisasi tingkat pertama (1NF) dan berlanjut ke tingkat normalisasi
berikutnya sesuai kebutuhan.
Berikut adalah beberapa konsep utama dalam normalisasi ERD:
1.
1NF (First Normal Form): Dalam
1NF, setiap kolom dalam tabel harus berisi data atomik (data yang tidak dapat
dipecah lagi) dan tidak boleh ada duplikasi baris.
2.
2NF (Second Normal Form): Dalam
2NF, tabel harus memenuhi syarat 1NF, dan setiap non-key kolom harus sepenuhnya
tergantung pada kunci utama (primary key).
3.
3NF (Third Normal Form): Dalam
3NF, tabel harus memenuhi syarat 2NF, dan setiap non-key kolom tidak boleh
memiliki ketergantungan transitif pada kunci utama.
4.
BCNF (Boyce-Codd Normal Form): BCNF
adalah bentuk normal yang lebih ketat daripada 3NF dan digunakan untuk
memastikan bahwa setiap ketergantungan fungsional dalam tabel adalah superkey.
5.
4NF (Fourth Normal Form dan 5NF (Fifth Normal Form): Bentuk
normal ini mengatasi kasus khusus yang melibatkan multivalued dependencies dan
join dependencies.
Proses normalisasi tidak selalu menghasilkan struktur yang paling
efisien, dan dalam beberapa kasus, over-normalisasi dapat mengakibatkan kinerja
yang buruk. Oleh karena itu, pemahaman yang baik tentang kebutuhan aplikasi dan
pemilihan bentuk normal yang sesuai sangat penting dalam merancang basis data
yang efisien.
mari kita lihat contoh normalisasi pada sebuah database sederhana yang
berhubungan dengan informasi pelanggan dan pesanan. Database ini terdiri dari
dua tabel: tabel "Pelanggan" dan tabel "Pesanan".
Tabel Pelanggan (Customer):
ID (PK) |
Nama Pelanggan |
Alamat |
1 |
Alice |
Jl. A |
2 |
Bob |
Jl. B |
3 |
Carol |
Jl. C |
Tabel Pesanan (Order):
Nomor Pesanan (PK) |
Tanggal Pesanan |
Pelanggan (FK) |
101 |
2023-01-15 |
1 |
102 |
2023-01-16 |
2 |
103 |
2023-01-16 |
1 |
Ini adalah bentuk awal (belum dinormalisasi) yang dapat kita sebut sebagai bentuk "0NF" karena ada beberapa masalah:
1. Duplikasi Data: Nama pelanggan dan alamatnya diulang di setiap pesanan yang dibuat oleh pelanggan yang sama.
2.
Ketergantungan Parsial:
Tanggal pesanan bergantung pada nomor pesanan, tetapi juga pada pelanggan. Jika
alamat pelanggan berubah, tanggal pesanan sebelumnya juga dapat menjadi tidak
konsisten.
Mari normalisasi data ini:
1NF (First Normal Form):
Mengatasi duplikasi data dengan memisahkan data unik ke dalam tabel terpisah.
Tabel Pelanggan (Customer):
ID (PK) |
Nama Pelanggan |
Alamat |
1 |
Alice |
Jl. A |
2 |
Bob |
Jl. B |
3 |
Carol |
Jl. C |
Tabel Pesanan (Order):
Nomor Pesanan (PK) |
Tanggal Pesanan |
Pelanggan (FK) |
101 |
2023-01-15 |
1 |
102 |
2023-01-16 |
2 |
103 |
2023-01-16 |
1 |
2NF (Second Normal Form):
Memastikan bahwa setiap non-key kolom tergantung sepenuhnya pada kunci
utama.
Tabel Pelanggan (Customer):
ID (PK) |
Nama Pelanggan |
Alamat |
1 |
Alice |
Jl. A |
2 |
Bob |
Jl. B |
3 |
Carol |
Jl. C |
Tabel Pesanan (Order):
Nomor Pesanan (PK) |
Tanggal Pesanan |
Pelanggan (FK) |
101 |
2023-01-15 |
1 |
102 |
2023-01-16 |
2 |
103 |
2023-01-16 |
1 |
Dalam contoh ini, tidak ada ketergantungan parsial, karena tanggal
pesanan sepenuhnya bergantung pada nomor pesanan.
3NF (Third Normal Form):
Memastikan bahwa tidak ada ketergantungan transitif dalam tabel.
ID (PK) |
Nama Pelanggan |
Alamat |
1 |
Alice |
Jl. A |
2 |
Bob |
Jl. B |
3 |
Carol |
Jl. C |
Tabel Pesanan (Order):
Nomor Pesanan (PK) |
Tanggal Pesanan |
Pelanggan (FK) |
101 |
2023-01-15 |
1 |
102 |
2023-01-16 |
2 |
103 |
2023-01-16 |
1 |
Tabel ini juga memenuhi 3NF karena tidak ada ketergantungan transitif
dalam tabel.
Dengan normalisasi ini, kita memiliki struktur database yang lebih
efisien dan data yang konsisten. Ini adalah contoh normalisasi sederhana dalam
ERD. Dalam situasi nyata, proses normalisasi dapat lebih kompleks dengan banyak
tabel terkait dan aturan yang lebih rumit.
0 comments