Apa itu Primary Key, Foreign Key, dan Candidate Key?

Posted by Haidar Ali Abidin on October 9, 2025

Halo, para pejuang kode!

Sebagai mahasiswa Teknik Informatika, salah satu konsep dasar yang wajib kita kuasai dalam merancang database adalah tentang "kunci" atau key. Kunci ini bukan sembarang kunci, lho. Mereka adalah fondasi yang memastikan data kita terstruktur, unik, dan saling terhubung dengan benar.

Pada artikel kali ini, kita akan membahas tuntas tiga jenis kunci utama dalam database: Primary Key, Foreign Key, dan Candidate Key. Mari kita bedah satu per satu!

1. Apa itu Candidate Key?

Sebelum mengenal Primary Key, kita harus paham dulu apa itu Candidate Key.

Bayangkan kamu punya sebuah tabel data mahasiswa. Untuk membedakan setiap mahasiswa secara unik, kamu bisa menggunakan beberapa atribut, misalnya:

  • NIM (Nomor Induk Mahasiswa)
  • Email
  • Kombinasi (Nama Lengkap + Tanggal Lahir + Alamat)

Semua atribut atau gabungan atribut yang bisa secara unik mengidentifikasi setiap baris data dalam sebuah tabel disebut Candidate Key. Artinya, semua pilihan di atas adalah "kandidat" untuk menjadi kunci utama.

Syarat Candidate Key

  • Unik: Nilainya tidak boleh sama untuk baris yang berbeda.
  • Tidak Boleh NULL: Nilainya tidak boleh kosong.

Dari semua kandidat yang ada, kita akan memilih satu yang terbaik untuk menjadi Primary Key.

2. Apa itu Primary Key?

Primary Key adalah Candidate Key yang terpilih sebagai identitas utama untuk setiap baris dalam sebuah tabel. Ia adalah "sang juara" yang paling efisien dan paling representatif untuk menjadi acuan.

Dalam kasus tabel mahasiswa tadi, NIM adalah pilihan terbaik untuk menjadi Primary Key karena singkat, unik, dan pasti dimiliki oleh setiap mahasiswa.

Karakteristik Primary Key:

  • Hanya ada satu Primary Key dalam satu tabel.
  • Nilainya harus unik dan tidak boleh NULL.
  • Biasanya berupa angka (integer) yang bisa bertambah otomatis (auto-increment) untuk efisiensi.

3. Apa itu Foreign Key?

Nah, kalau Primary Key adalah identitas di "rumahnya" sendiri, maka Foreign Key adalah "kunci tamu" yang menghubungkan satu tabel dengan tabel lainnya.

Foreign Key adalah sebuah kolom (atau beberapa kolom) di sebuah tabel yang nilainya merujuk pada Primary Key di tabel lain. Fungsinya adalah untuk menciptakan dan menjaga hubungan (relasi) antar tabel.

Contohnya, pada tabel Mata_Kuliah_Diambil, kita butuh kolom NIM_Mahasiswa untuk menandakan siapa yang mengambil mata kuliah tersebut. Kolom NIM_Mahasiswa ini adalah Foreign Key yang merujuk ke Primary Key NIM di tabel Mahasiswa.

Penerapan pada ERD (Entity-Relationship Diagram)

Sekarang, mari kita lihat 5 contoh penerapan kunci ini dalam berbagai skenario menggunakan ERD. Kamu bisa membuat visualisasi ini dengan mudah di MySQL Workbench pada bagian EER Diagram.

Contoh 1: Sistem Akademik Kampus

  • Entitas: Mahasiswa, Mata_Kuliah, KRS (Kartu Rencana Studi)
  • Visualisasi di Workbench:
    • Buat tiga tabel.
    • Tabel Mahasiswa memiliki Primary Key NIM. Di sini, Email_Kampus bisa menjadi Candidate Key.
    • Tabel Mata_Kuliah adalah tabel penghubung. Ia memilik Primary Key Kode_MK di tabel.
    • Tabel KRS memiliki Foreign Key NIM_Mhs yang merujuk ke NIM di tabel Mahasiswa, dan Foreign Key Kode_MK yang merujuk ke Kode_MK di tabel Mata_Kuliah. Kombinasi (NIM_Mhs, Kode_MK) bisa menjadi Primary Key untuk tabel KRS.
... Contoh visualisasi di MySQL Workbench

Contoh 2: Sistem Perpustakaan

  • Entitas: Buku, Anggota, Peminjaman
  • Visualisasi di Workbench:
    • Tabel Buku memiliki Primary Key ID_Buku. ISBN bisa menjadi Candidate Key.
    • Tabel Anggota memiliki Primary Key ID_Anggota. Email_Anggota bisa menjadi Candidate Key.
    • Tabel Peminjaman memiliki Foreign Key ID_Anggota yang merujuk ke tabel Anggota, dan Foreign Key ID_Buku yang merujuk ke tabel Buku. Kombinasi (ID_Anggota, ID_Buku) bisa menjadi Primary Key untuk tabel Peminjaman.
... Contoh visualisasi di MySQL Workbench

Contoh 3: Sistem Penjualan Online

  • Entitas: Produk, Pelanggan, Pesanan
  • Visualisasi di Workbench:
    • Tabel Produk memiliki Primary Key ID_Produk. Kode_Produk bisa menjadi Candidate Key.
    • Tabel Pelanggan memiliki Primary Key ID_Pelanggan. Email_Pelanggan bisa menjadi Candidate Key.
    • Tabel Pesanan memiliki Foreign Key ID_Pelanggan yang merujuk ke tabel Pelanggan, dan Foreign Key ID_Produk yang merujuk ke tabel Produk. Kombinasi (ID_Pelanggan, ID_Produk) bisa menjadi Primary Key untuk tabel Pesanan.
... Contoh visualisasi di MySQL Workbench

Contoh 4: Sistem Rumah Sakit

  • Entitas: Pasien, Dokter, Rekam_Medis
  • Visualisasi di Workbench:
    • Tabel Pasien memiliki Primary Key ID_Pasien. No_Rekam_Medis juga merupakan Candidate Key yang kuat.
    • Tabel Dokter memiliki Primary Key ID_Dokter. No_SIP (Surat Izin Praktik) adalah Candidate Key.
    • Tabel Rekam_Medis memiliki Primary Key ID_Rekam_Medis. Tabel ini memiliki dua Foreign Key: ID_Pasien (merujuk ke Pasien) dan ID_Dokter (merujuk ke Dokter).
... Contoh visualisasi di MySQL Workbench

Contoh 5: Blog Sederhana

  • Entitas: user, Postingan, Komentar
  • Visualisasi di Workbench:
    • Tabel user memiliki Primary Key id_user. username dan email adalah Candidate Key.
    • Tabel Postingan memiliki Primary Key id_postingan. Tabel ini memiliki Foreign Key id_user yang merujuk ke tabel user.
    • Tabel Komentar memiliki Primary Key id_komentar. Tabel ini memiliki dua Foreign Key: id_user (merujuk ke user yang mengomentari) dan id_postingan (merujuk ke postingan yang dikomentari).
... Contoh visualisasi di MySQL Workbench

Dengan memahami dan menerapkan konsep Primary Key, Foreign Key, dan Candidate Key, kita bisa merancang database yang tidak hanya efisien tetapi juga mudah di-maintain. Jadi, jangan ragu untuk bereksperimen dengan MySQL Workbench dan buatlah ERD-mu sendiri!