Normalisasi database: dari 1NF sampai 3NF
Kurangi duplikasi data dengan memahami tiga bentuk normal yang paling sering dipakai.
Kenapa normalisasi penting
Data yang berulang di banyak baris membuat perubahan menjadi berisiko: satu perubahan bisa terlewat di baris lain sehingga data menjadi tidak konsisten. Normalisasi adalah proses menata struktur tabel supaya setiap fakta hanya disimpan di satu tempat.
Bentuk normal pertama (1NF)
Sebuah tabel memenuhi 1NF jika setiap kolom menyimpan nilai tunggal, bukan daftar yang digabung jadi satu teks.
-- Melanggar 1NF: satu kolom menyimpan banyak nilai
CREATE TABLE pesanan_buruk (
id INT PRIMARY KEY,
produk VARCHAR(255) -- contoh isi: 'Buku, Pensil, Pulpen'
);
-- Mengikuti 1NF: satu baris untuk satu produk
CREATE TABLE pesanan_item (
id INT PRIMARY KEY,
pesanan_id INT NOT NULL,
produk VARCHAR(100) NOT NULL
);
Bentuk normal kedua (2NF)
2NF berlaku untuk tabel dengan kunci gabungan. Setiap kolom bukan kunci harus bergantung pada seluruh kunci, bukan hanya sebagian.
-- pesanan_id + produk_id adalah kunci gabungan
-- nama_produk hanya bergantung pada produk_id, bukan pesanan_id
-- sehingga sebaiknya dipindah ke tabel produk tersendiri
CREATE TABLE produk (
produk_id INT PRIMARY KEY,
nama_produk VARCHAR(100) NOT NULL
);
Bentuk normal ketiga (3NF)
3NF menghilangkan ketergantungan antar kolom bukan kunci. Misalnya kode_pos yang menentukan nama_kota sebaiknya disimpan di tabel kota, bukan diulang di setiap baris pelanggan.
Normalisasi bukan aturan mutlak
Beberapa laporan justru membutuhkan data yang sedikit didenormalisasi agar query lebih cepat dibaca. Gunakan normalisasi sebagai titik awal, lalu longgarkan pada bagian yang benar-benar butuh performa baca yang tinggi.
Latihan
Ambil satu tabel di aplikasi Anda yang punya kolom berisi daftar dipisah koma, lalu rancang ulang menjadi tabel terpisah mengikuti 1NF.
