Lewati ke konten utama

Apa itu Second Normal Form (2NF)?

Pelajari bagaimana second normal form (2NF) dapat meningkatkan desain basis data Anda dengan menghilangkan ketergantungan parsial.
Diperbarui 28 Sep 2026  · 9 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Saat bekerja dengan basis data, masalah seperti data yang berulang dan pembaruan yang tidak konsisten sering terjadi. Second normal form adalah langkah normalisasi basis data yang dibangun di atas first normal form (1NF) untuk membuat tabel yang lebih rapi dan efisien. 

Memahami 2NF sangat penting bagi siapa pun yang bekerja dalam perancangan basis data atau manajemen data, dan menjadi fondasi bagi bentuk normalisasi yang lebih tinggi seperti third normal form (3NF). Dalam artikel ini, kita akan membahas cara kerja 2NF dan bagaimana mentransformasi tabel agar memenuhi persyaratan 2NF, disertai contoh praktis. Kita juga akan membahas manfaat dan kekurangan 2NF, serta kasus penggunaan yang paling sesuai.

Memahami Second Normal Form

Second normal form adalah langkah normalisasi basis data yang berfokus pada penghapusan ketergantungan parsial. Konsep ini diperkenalkan oleh Edgar F. Codd, pelopor basis data relasional, sebagai bagian dari karyanya tentang normalisasi.  

Sebelum sebuah tabel dapat berada dalam 2NF, tabel tersebut harus memenuhi aturan first normal form:

  • Atomisitas: Setiap sel harus berisi satu nilai tunggal (tanpa kelompok berulang atau array).
  • Baris unik: Tabel harus memiliki kunci utama yang jelas.

2NF melangkah lebih jauh dengan aturan tambahan: hilangkan ketergantungan parsial.

Ketergantungan parsial terjadi ketika atribut non-prime (kolom yang bukan bagian dari kandidat kunci mana pun) bergantung pada sebagian dari kunci komposit, bukan pada keseluruhan kunci. Aturan 2NF memastikan bahwa semua atribut non-prime bergantung pada seluruh kunci utama, bukan hanya sebagian. Membiarkan ketergantungan parsial dalam sebuah tabel berarti data redundan dapat masuk ke basis data, menyebabkan ketidakefisienan dan potensi inkonsistensi saat pembaruan atau penghapusan.

Teori saja bisa terasa kering, jadi mari kita lihat contoh praktis.

Di bawah ini adalah tabel Pendaftaran Kursus untuk siswa Datacamp.

ID Siswa ID Kursus Nama Kursus Nama Instruktur
1001 201 SQL Fundamentals Ken Smith
1002 202 Introduction to Python Merlin O’Donnell
1001 202 Introduction to Python Merlin O’Donnell

Di sini, kunci utama adalah gabungan dari ID Siswa dan ID Kursus. Namun, atribut non-prime Nama Kursus dan Biaya Kursus hanya bergantung pada ID Kursus, bukan keseluruhan kunci. Ini melanggar 2NF.

Langkah-langkah Mendekomposisi Tabel untuk Mencapai 2NF

Untuk memastikan sebuah tabel mengikuti aturan 2NF, Anda perlu:

  1. Identifikasi Semua Kandidat Kunci: Tentukan himpunan atribut minimal yang mengidentifikasi baris secara unik dalam tabel. Inilah kandidat kunci Anda.
  2. Tentukan Ketergantungan Fungsional: Identifikasi semua ketergantungan fungsional dalam tabel. Secara khusus, cari ketergantungan di mana atribut non-prime (yang bukan bagian dari kandidat kunci mana pun) hanya bergantung pada sebagian dari kunci komposit.
  3. Hilangkan Ketergantungan Parsial: Untuk setiap ketergantungan parsial:
    • Pindahkan atribut yang bergantung ke tabel baru bersama bagian kunci yang menjadi dependensinya.
    • Pastikan tabel baru memiliki kunci utama yang unik.
  4. Ulangi Hingga Tidak Ada Ketergantungan Parsial yang Tersisa: Konfirmasikan bahwa setiap atribut non-prime di semua tabel sepenuhnya bergantung pada kunci utama masing-masing.

Contoh Penerapan Second Normal Form

Mari sekarang lihat dua contoh.

Contoh 1: Tabel pendaftaran kursus

Sebelumnya, kita melihat tabel pendaftaran kursus berikut:

ID Siswa ID Kursus Nama Kursus Nama Instruktur
1001 201 SQL Fundamentals Ken Smith
1002 202 Introduction to Python Merlin O’Donnell
1001 202 Introduction to Python Merlin O’Donnell

Mari ikuti langkah-langkah yang telah kita bahas pada bagian sebelumnya.

1. Identifikasi kandidat kunci.

Dalam kasus ini, kandidat kuncinya adalah kunci komposit dari ID Siswa dan ID Kursus. Kombinasi unik ini mengidentifikasi setiap baris dalam tabel.

2. Tentukan ketergantungan fungsional

Nama Kursus dan Nama Instruktur bergantung pada ID Kursus, bukan pada seluruh kunci komposit (ID Siswa, ID Kursus). Ini adalah ketergantungan parsial karena atribut-atribut ini hanya bergantung pada sebagian dari kunci komposit.

3. Hilangkan ketergantungan parsial

Kita perlu memindahkan atribut yang hanya bergantung pada sebagian kunci (Nama Kursus dan Nama Instruktur) ke tabel baru yang didasarkan hanya pada ID Kursus.

Setelah dekomposisi, tabel baru kita terlihat seperti ini:

Tabel pendaftaran kursus

ID Siswa ID Kursus
1001 201
1002 202
1001 202

Tabel detail kursus

ID Kursus Nama Kursus Nama Instruktur
201 SQL Fundamentals Ken Smith
202 Introduction to Python Merlin O’Donnell

Jika Anda ingin praktik langsung dan membuat basis data sendiri, lihat kursus PostgresQL kami. Jika Anda sedikit lebih mahir, Anda bisa mencoba Introduction to Data Modeling in Snowflake, yang membahas gagasan seperti pemodelan entitas-relasi dan dimensional.

Contoh 2: Tabel pesanan

Kita akan mulai dengan tabel Pesanan ini. Cobalah ikuti langkah-langkah yang telah kita bahas di atas dan dekomposisi tabel ini sendiri! 

ID Pesanan ID Produk Tanggal Pesanan Nama Produk Nama Pemasok
1 201 2024-11-01 Laptop TechSupply
1 202 2024-11-01 Mouse TechSupply
2 201 2024-11-02 Laptop TechSupply
3 203 2024-11-03 Keyboard KeyMasters

1. Identifikasi kandidat kunci

Kombinasi ID Pesanan dan ID Produk mengidentifikasi setiap baris secara unik, menjadikan (ID Pesanan, ID Produk) sebagai kandidat kunci komposit. Tidak ada satu kolom pun yang dapat mengidentifikasi baris secara unik karena:

  • ID Pesanan saja tidak unik, karena beberapa produk bisa menjadi bagian dari pesanan yang sama.
  • ID Produk saja tidak unik, karena produk yang sama dapat muncul di pesanan yang berbeda.

Ini berarti (ID Pesanan, ID Produk) juga merupakan kunci utama kita.

2. Tentukan ketergantungan fungsional

Tanggal Pesanan bergantung pada ID Pesanan (bukan pada seluruh kunci komposit). Ini adalah ketergantungan parsial.

Nama Produk dan Nama Pemasok bergantung pada ID Produk (bukan pada seluruh kunci komposit). Ini juga ketergantungan parsial.

3. Hilangkan ketergantungan parsial

Kita perlu membagi tabel menjadi tabel-tabel yang lebih kecil, masing-masing menangani satu ketergantungan logis. 

Pertama, kita akan membuat tabel untuk informasi pesanan, yang memuat informasi khusus untuk ID Pesanan.

Tabel Pesanan

ID Pesanan Tanggal Pesanan
1 2024-11-01
2 2024-11-02
3 2024-11-03

Lalu, kita membuat tabel yang berisi informasi khusus untuk ID Produk.

Tabel Pesanan

ID Produk Nama Produk Nama Pemasok
201 Laptop TechSupply
202 Mouse TechSupply
203 Keyboard KeyMasters

Tabel asli kini disederhanakan hanya menjadi kunci komposit dan relasi antara pesanan dan produk.

ID Pesanan ID Produk
1 201
1 202
2 201
3 203

Sekarang, basis data kita berada dalam 2NF karena 1) semua ketergantungan parsial telah dihilangkan, dan 2) atribut non-prime sepenuhnya bergantung pada kunci utama masing-masing.

Kapan Menerapkan Second Normal Form

Jadi, mengapa Anda perlu merefaktor basis data ke 2NF? Apakah ini sudah cukup, atau sebaiknya melangkah lebih jauh dan menargetkan 3NF? 

Manfaat dan keterbatasan second normal form

Second normal form menawarkan beberapa keunggulan, menjadikannya langkah yang berguna dalam proses normalisasi basis data:

  • Peningkatan integritas data: Dengan menghilangkan ketergantungan parsial, 2NF meminimalkan anomali saat penyisipan, pembaruan, dan penghapusan, sehingga basis data lebih andal.
  • Pengurangan redundansi: 2NF mengurangi pengulangan data, mengoptimalkan penggunaan penyimpanan, dan menyederhanakan pemeliharaan data.
  • Struktur data yang lebih baik: Ini menjadi landasan untuk normalisasi lebih lanjut, seperti menuju third normal form, dengan menciptakan desain basis data yang lebih bersih dan efisien.

Namun ada beberapa keterbatasan:

  • Peningkatan kompleksitas: Mendekomposisi tabel agar memenuhi 2NF dapat membuat proses desain lebih kompleks, khususnya saat menangani kunci komposit dan ketergantungan.
  • Join tambahan: Pemecahan tabel mungkin memerlukan lebih banyak join dalam kueri, yang berpotensi memengaruhi kinerja pada sistem dengan dataset besar atau kueri kompleks — pembahasan lebih lanjut di bawah.
  • Redundansi tersisa: Meskipun 2NF mengurangi ketergantungan parsial, ia tidak menangani ketergantungan transitif, sehingga sebagian redundansi tetap ada hingga ditangani di 3NF.

Pertimbangan kinerja dengan second normal form

Mendekomposisi tabel untuk menghilangkan ketergantungan parsial dapat berdampak langsung pada kinerja basis data. Di satu sisi, mencapai 2NF mengurangi redundansi data dan meningkatkan konsistensi, sehingga lebih sedikit anomali saat operasi insert, update, atau delete. Di sisi lain, normalisasi dapat meningkatkan jumlah tabel, yang berarti diperlukan join tambahan saat mengambil data terkait. Ini dapat memengaruhi kinerja kueri pada dataset besar.

Agar basis data yang dinormalisasi tetap berkinerja baik, pastikan Anda mengikuti praktik terbaik berikut:

  • Pengindeksan: Gunakan indeks untuk mempercepat join antar tabel hasil dekomposisi.
  • Optimasi kueri: Optimalkan kueri untuk meminimalkan biaya join tambahan.
  • Pendekatan hibrida: Padukan normalisasi dengan denormalisasi di area yang penting untuk kinerja, seperti tabel pelaporan.
  • Pemantauan rutin: Evaluasi kinerja basis data Anda secara berkelanjutan dengan alat pemrofilan untuk mendeteksi potensi masalah.

Apakah 2NF hanya langkah transisional menuju third normal form?

Dalam banyak kasus, perancang basis data berupaya mencapai third normal form karena kemampuannya untuk lebih mengurangi redundansi dan meningkatkan integritas data secara keseluruhan. Namun, mencapai 3NF sering memerlukan pekerjaan tambahan, seperti membuat lebih banyak tabel dan relasi, yang dapat menambah kompleksitas dan pertukaran kinerja dalam eksekusi kueri.

Ada kasus di mana penggunaan second normal form saja sudah memadai. Jika kesederhanaan dan implementasi cepat menjadi prioritas, seperti dalam proyek skala kecil, pembuatan prototipe, atau situasi dengan redundansi data minimal, 2NF dapat mencukupi. Misalnya, dalam sistem di mana semua atribut sudah sepenuhnya bergantung pada kunci utama sederhana, mencapai 2NF mungkin sudah memenuhi tujuan utama untuk mengurangi ketergantungan parsial, tanpa perlu normalisasi lebih lanjut.

Melangkah melampaui second normal form: menuju third normal form

Jika Anda ingin menormalisasi basis data lebih jauh, Anda dapat terus merefaktor tabel untuk mencapai third normal form.

3NF dibangun di atas 2NF dengan menangani ketergantungan transitif – situasi ketika atribut non-kunci bergantung pada atribut non-kunci lainnya alih-alih pada kunci utama. Perkembangan ini memastikan setiap atribut bergantung langsung pada kunci utama dan tidak pada hal lainnya.

Sebagai contoh, dalam tabel yang melacak pendaftaran kursus:

  • 2NF: Memastikan bahwa atribut seperti nama kursus dan nama siswa sepenuhnya bergantung pada kunci utama masing-masing (misalnya, ID Siswa dan ID Kursus). Ini menghilangkan ketergantungan parsial, ketika atribut non-kunci hanya bergantung pada sebagian dari kunci komposit.
  • 3NF: Memastikan bahwa atribut seperti detail instruktur atau informasi departemen disimpan dalam tabel terpisah, menghilangkan ketergantungan transitif.

3NF ideal untuk sistem yang lebih kompleks di mana integritas dan efisiensi data sangat penting, terutama saat volume data meningkat. Lihat artikel Apa itu third normal form? jika Anda ingin mempelajari lebih lanjut tentang 3NF dan bentuk yang lebih ketat, BCNF.

Kesimpulan

Second normal form adalah langkah penting dalam normalisasi basis data, menjembatani kesenjangan antara 1NF dan bentuk yang lebih tinggi seperti 3NF. Dengan menghapus ketergantungan parsial, 2NF mengurangi redundansi dan meningkatkan keandalan data Anda. Meskipun dapat menambah kompleksitas, manfaat berupa peningkatan integritas data dan pemeliharaan yang lebih sederhana menjadikannya bagian krusial dari desain basis data yang efektif.

Jika Anda siap meningkatkan keterampilan, jelajahi kursus Database Design kami untuk memperdalam pemahaman tentang teknik normalisasi dan penerapannya secara praktis. Anda juga dapat memvalidasi keterampilan SQL dan manajemen basis data serta menunjukkan keahlian Anda kepada calon pemberi kerja dengan Sertifikasi SQL Associate kami!

Terakhir, saya ingin mengatakan, jika Anda seorang pengambil keputusan di bisnis dan tahu bahwa Anda perlu membangun basis data yang lebih bersih dan efisien, pertimbangkan untuk mengajukan permintaan demo DataCamp for Business. Kami dapat membantu mentransformasi kapabilitas tim Anda sehingga Anda bisa membuat sistem basis data yang skalabel guna mendorong efisiensi dan inovasi bisnis. Kami bahkan dapat membuat jalur pembelajaran dan track khusus yang disesuaikan. 


Marie Fayard's photo
Author
Marie Fayard

Saya adalah tech lead berorientasi produk yang berspesialisasi dalam mengembangkan startup tahap awal dari prototipe pertama hingga mencapai product-market fit dan seterusnya. Saya sangat penasaran dengan cara orang menggunakan teknologi, dan saya senang bekerja erat dengan para founder serta tim lintas fungsi untuk mewujudkan ide-ide berani. Saat tidak membangun produk, saya mencari inspirasi di berbagai penjuru dunia atau melepas penat di studio yoga.

2NF FAQs

Dapatkah second normal form (2NF) diterapkan pada basis data tanpa kunci komposit?

Ya! Meskipun 2NF sering melibatkan kunci komposit, tabel dengan satu kunci juga dapat mengikuti prinsip 2NF jika semua atribut non-prime sepenuhnya bergantung pada kunci utama.

Apakah mencapai 2NF menjamin penghilangan semua redundansi dalam basis data?

Tidak. Meskipun 2NF menghilangkan ketergantungan parsial, ini tidak menangani ketergantungan transitif. Untuk itu, Anda perlu melangkah ke third normal form (3NF).

Apakah ada situasi di mana basis data dalam 1NF sudah cukup tanpa melanjutkan ke 2NF?

Ya. Dalam sistem yang sangat sederhana dengan redundansi data minimal atau dalam prototipe, 1NF mungkin sudah cukup. Namun, saya umumnya tidak menyarankan berhenti di 1NF kecuali Anda memiliki alasan yang sangat spesifik dan dapat dibenarkan.

Apa perbedaan antara 2NF dan third normal form (3NF)?

2NF menghapus ketergantungan parsial, memastikan atribut bergantung pada seluruh kunci. 3NF melangkah lebih jauh dengan menghapus ketergantungan transitif, memastikan bahwa atribut bergantung langsung pada kunci utama dan bukan pada atribut non-kunci lainnya.

Bagaimana cara memeriksa apakah basis data saya yang ada sudah berada dalam 2NF?

Anda dapat memeriksanya dengan meninjau semua tabel yang memiliki kunci komposit dan memverifikasi bahwa semua atribut non-prime bergantung pada seluruh kunci komposit, bukan hanya sebagian.

Topik
Rekayasa Data
SQL

Belajar bersama DataCamp

{count, plural, one {Kursus} other {Kursus}}

Perancangan Basis Data

{hours} jam
131.1K
Pelajari cara merancang database di SQL untuk memproses, menyimpan, dan mengatur data dengan cara yang lebih efisien.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

{count, plural, one {blog} other {blogs}}

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

{count, plural, one {blog} other {blogs}}

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

{count, plural, one {blog} other {blogs}}

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

{count, plural, one {blog} other {blogs}}

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat SelengkapnyaLihat Selengkapnya