Back to blog
Backend

Normalisasi Database: Cara Mencegah Data Berulang di SQL (1NF, 2NF, 3NF)

Desain database yang berantakan adalah bom waktu. Jika kamu harus mengedit 10 baris data hanya untuk mengganti satu nama orang, artinya databasemu cacat.

super admin·19 Juni 2026·2 min read
Normalisasi Database: Cara Mencegah Data Berulang di SQL (1NF, 2NF, 3NF)
Article Content

Menyembuhkan Penyakit Redundansi (Data Berulang)

Salah satu keahlian termahal seorang *Backend Developer* adalah kemampuannya merancang skema Database SQL (seperti MySQL/PostgreSQL). Pemula biasanya mendesain database seperti membuat tabel absensi di Excel—semua data dimasukkan ke dalam satu tabel raksasa.

Misalnya, ada Tabel "Pesanan" yang kolomnya berisi: ID Pesanan, Nama Budi, Alamat Budi, HP Budi, Nama Barang, Harga Barang.
Jika Budi memesan 10 barang yang berbeda, data Nama Budi, Alamat, dan HP harus diketik ulang (di-copy-paste) sebanyak 10 kali! Jika besok Budi pindah rumah, kamu harus meng-update 10 baris tersebut. Ini disebut Anomali Data.

Untuk merapikannya, kita menggunakan teknik Normalisasi Database (Database Normalization).

1. Bentuk Normal Pertama (1NF - First Normal Form)

Aturan dasar pertama: Satu sel, satu isi. Jangan ada data berlipat-lipat di satu kolom!

  • Masalah: Di kolom "Hobi", kamu menuliskan Berenang, Membaca, Main Game di dalam satu sel.
  • Solusi 1NF: Kolom tidak boleh mengandung *array* atau koma. Kamu harus memecahnya menjadi baris tersendiri.

2. Bentuk Normal Kedua (2NF - Second Normal Form)

Aturan kedua: Setiap data harus bergantung SEPENUHNYA pada Kunci Utama (Primary Key). (Syaratnya, tabel harus sudah lulus 1NF).

  • Masalah: Pada Tabel Pesanan, *Primary Key*-nya adalah ID_Pesanan. Di sana ada kolom Nama_Pelanggan. Padahal, nama pelanggan tidak ada hubungannya dengan pesanan itu secara langsung (Pelanggan itu eksis meskipun dia tidak memesan barang).
  • Solusi 2NF: "Cincang" tabelnya! Buat tabel baru bernama Tabel_Pelanggan (Berisi ID Pelanggan dan Nama). Di Tabel Pesanan, buang kolom Namanya, dan sisakan ID_Pelanggan saja (sebagai *Foreign Key* / kunci tamu).

3. Bentuk Normal Ketiga (3NF - Third Normal Form)

Aturan ketiga: Tidak boleh ada ketergantungan transitif. Kolom biasa tidak boleh bergantung pada kolom biasa lainnya. (Syaratnya, tabel harus sudah lulus 2NF).

  • Masalah: Di Tabel Pelanggan, ada kolom Kode_Pos, lalu ada kolom Nama_Kota. Padahal, Nama Kota itu bergantung mutlak pada Kode Pos (Jika kode pos 10110, itu PASTI Jakarta Pusat). Mereka tidak bergantung langsung pada ID_Pelanggan.
  • Solusi 3NF: Cincang lagi! Buat tabel baru bernama Tabel_Wilayah (Berisi Kode Pos dan Kota). Di Tabel Pelanggan, cukup tinggalkan kolom Kode_Pos.

Kesimpulan

Pusing? Wajar! Inti dari Normalisasi adalah "Jika ada data yang ditulis berulang kali di banyak baris, potong data itu, buatkan tabel rumahnya sendiri, lalu sambungkan mereka dengan Kunci (Foreign Key)!". Database yang sudah mencapai 3NF akan sangat kebal terhadap bentrok data saat proses *Update* atau *Delete*.

Mau langsung pakai template?

Jelajahi template gratis dan premium di TampilKit untuk mempercepat proses development project kamu.

Browse Templates