← Back to list

Apa itu PrimaryKey (Kunci Utama), ForeignKey (Kunci Asing), Candidate Key

Primary Key

Rizky Ferdi Nugraha · 2023-10-29 01:40 · 0 claps · 5.3 min read
#primary-keys #foreign-key #candidate-key
Open on Medium ↗

Apa itu PrimaryKey (Kunci Utama), ForeignKey (Kunci Asing), Candidate Key

Primary Key

Definisi

PrimaryKey adalah sebuah kunci di basis data yang digunakan untuk mengidentifikasi setiap baris dalam sebuah tabel secara unik. Ini berarti setiap baris dalam tabel memiliki nilai PrimaryKey yang berbeda.

Karakteristik utama dari PrimaryKey

  1. Unik : Setiap baris dalam sebuah tabel harus memiliki nilai PrimaryKey yang berbeda. Tidak ada dua baris yang boleh memiliki nilai PrimaryKey yang sama.
  2. Tidak boleh bernilai NULL : Nilai dari PrimaryKey tidak boleh kosong atau NULL. Ini memastikan bahwa setiap baris dapat diidentifikasi dengan jelas.
  3. Keberlanjutan: Nilai PrimaryKey tidak boleh berubah sepanjang waktu. Jika suatu nilai dipilih sebagai PrimaryKey, nilai tersebut harus tetap konstan dan tidak berubah.
  4. Hanya satu per tabel: Setiap tabel hanya boleh memiliki satu PrimaryKey. Meskipun PrimaryKey dapat terdiri dari lebih dari satu kolom (dikenal sebagai “composite key” atau kunci gabungan), tetapi hanya satu set kolom yang dapat ditunjuk sebagai PrimaryKey.

Fungsi utama dari PrimaryKey

  1. Pengidentifikasi Unik: Ini membantu dalam mengidentifikasi setiap baris dalam tabel dengan tepat.
  2. Integritas Data: Dengan memastikan setiap baris dapat diidentifikasi secara unik, kita dapat memastikan integritas data.
  3. Hubungan: PrimaryKey digunakan sebagai dasar untuk membangun relasi dengan tabel lain melalui ForeignKey.

Perbedaan dengan Konsep Lain

  1. PrimaryKey vs. Unique Key: Kedua kunci ini memastikan keunikan, tetapi tabel bisa memiliki banyak Unique Key sementara hanya satu PrimaryKey. Selain itu, Unique Key memungkinkan NULL, sedangkan PrimaryKey tidak.
  2. PrimaryKey vs. Candidate Key: Seperti yang telah disebutkan sebelumnya, Candidate Key adalah kunci yang memenuhi syarat untuk menjadi PrimaryKey. Setelah salah satu dari mereka dipilih sebagai PrimaryKey, yang lainnya tetap sebagai Alternate Keys.

Pertimbangan saat memilih PrimaryKey

  1. Kecil dan Sederhana: Lebih baik jika PrimaryKey singkat dan sederhana. Sebuah integer auto-increment (seperti “ID” yang meningkat otomatis) seringkali menjadi pilihan yang baik.
  2. Tetap Statis: Nilai PrimaryKey seharusnya tidak perlu diubah. Oleh karena itu, hindari menggunakan atribut yang mungkin berubah sebagai PrimaryKey (misalnya alamat email).
  3. Tanpa makna bisnis: Kadang-kadang lebih baik jika PrimaryKey tidak memiliki arti bisnis, seperti ID yang di-increment otomatis. Hal ini karena nilai dengan makna bisnis (seperti “NomorKTP”) bisa berubah seiring waktu atau memiliki arti khusus yang mungkin berubah.

5 Contoh Primary Key

  1. ID_Pelanggan dalam tabel Pelanggan: Biasanya merupakan bilangan bulat yang meningkat secara otomatis (auto-increment) setiap kali data pelanggan baru dimasukkan. Setiap pelanggan akan memiliki ID unik yang membedakannya dari pelanggan lain.
  2. ISBN dalam tabel Buku: ISBN (International Standard Book Number) adalah kode unik yang diberikan untuk setiap edisi dan variasi (misalnya, versi cetak keras atau lunak) dari sebuah buku. Ini memastikan bahwa setiap buku dapat diidentifikasi secara unik.
  3. No_KTP dalam tabel Warga: Di banyak negara, warga diberikan nomor identitas pribadi unik (misalnya, Nomor KTP di Indonesia). Ini memastikan bahwa setiap warga dapat diidentifikasi secara unik berdasarkan nomor identitasnya.
  4. ID_Pesanan dalam tabel Pesanan: Ketika pelanggan membuat pesanan, sistem biasanya akan menghasilkan ID pesanan yang unik untuk membedakan pesanan tersebut dari pesanan lainnya.
  5. Username dalam tabel Pengguna: Dalam sistem tertentu, nama pengguna (username) dapat dianggap unik, yang berarti tidak ada dua pengguna yang dapat memiliki username yang sama. Dalam kasus seperti itu, username bisa menjadi PrimaryKey.

ForeignKey (Kunci Asing)

Definisi

ForeignKey (Kunci Asing) adalah sebuah kunci yang digunakan untuk membangun hubungan antara dua tabel di dalam basis data relasional. ForeignKey pada satu tabel menunjuk ke PrimaryKey di tabel lain, membentuk hubungan antar tabel.

Karakteristik utama dari ForeignKey

  1. Pembentuk Hubungan: ForeignKey membangun hubungan antara dua tabel dengan mengacu pada PrimaryKey dari tabel lain. Hal ini memungkinkan kita untuk mengkombinasikan data dari dua tabel berdasarkan hubungan tersebut.
  2. Dapat Bernilai NULL: Berbeda dengan PrimaryKey, kolom yang ditetapkan sebagai ForeignKey bisa memiliki nilai NULL. Ini menunjukkan bahwa dalam beberapa kasus, hubungan ke tabel lain mungkin tidak ada.
  3. Tidak Harus Unik: Nilai dalam kolom ForeignKey tidak harus unik. Dalam banyak kasus, beberapa baris mungkin memiliki nilai ForeignKey yang sama, menunjukkan bahwa mereka semua terkait dengan baris yang sama di tabel lain.
  4. Bisa Lebih dari Satu per Tabel: Sebuah tabel bisa memiliki lebih dari satu ForeignKey, masing-masing menunjuk ke tabel lain.

Fungsi utama dari ForeignKey

  1. Referensi: ForeignKey memastikan bahwa entri di suatu tabel merujuk pada entri yang ada di tabel lain.
  2. Menjaga Integritas Data Referensial: Ini adalah konsep kunci dalam basis data relasional. Artinya, basis data akan memastikan bahwa hubungan yang didefinisikan oleh ForeignKey selalu tetap sah. Misalnya, baris yang direferensikan oleh ForeignKey tidak dapat dihapus selama masih ada referensi kepadanya.
  3. Normalisasi: ForeignKey memungkinkan normalisasi basis data, sebuah proses di mana data dibagi menjadi tabel untuk mengurangi duplikasi dan meningkatkan efisiensi.

Perbedaan dengan konsep lain

ForeignKey vs. PrimaryKey: Sementara PrimaryKey digunakan untuk mengidentifikasi setiap baris dalam tabel secara unik, ForeignKey digunakan untuk menunjukkan hubungan ke PrimaryKey di tabel lain.

5 Contoh ForeignKey

  1. Tabel Transaksi dan Pelanggan:

Transaksi: ID_Transaksi (PrimaryKey), Tanggal, Total, ID_Pelanggan (ForeignKey)

Pelanggan: ID_Pelanggan (PrimaryKey), Nama, Alamat Dalam hal ini, ID_Pelanggan di tabel Transaksi adalah ForeignKey yang merujuk ke ID_Pelanggan di tabel Pelanggan, menunjukkan siapa yang melakukan transaksi tersebut.

  1. Tabel Karyawan dan Departemen:

Karyawan: ID_Karyawan (PrimaryKey), Nama, ID_Departemen (ForeignKey)

Departemen: ID_Departemen (PrimaryKey), NamaDepartemen Dalam hal ini, ID_Departemen di tabel Karyawan adalah ForeignKey yang merujuk ke ID_Departemen di tabel Departemen, menunjukkan departemen tempat karyawan tersebut bekerja.

  1. Tabel Buku dan Penerbit:

Buku: ISBN (PrimaryKey), Judul, ID_Penerbit (ForeignKey)

Penerbit: ID_Penerbit (PrimaryKey), NamaPenerbit, Alamat Dalam hal ini, ID_Penerbit di tabel Buku adalah ForeignKey yang merujuk ke ID_Penerbit di tabel Penerbit, menunjukkan siapa penerbit dari buku tersebut.

  1. Tabel Pesanan dan Produk:

Pesanan: ID_Pesanan (PrimaryKey), Tanggal, ID_Produk (ForeignKey), Jumlah

Produk: ID_Produk (PrimaryKey), NamaProduk, Harga Dalam hal ini, ID_Produk di tabel Pesanan adalah ForeignKey yang merujuk ke ID_Produk di tabel Produk, menunjukkan produk apa yang dipesan.

  1. Tabel Artikel dan Penulis:

Artikel: ID_Artikel (PrimaryKey), Judul, Isi, ID_Penulis (ForeignKey)

Penulis: ID_Penulis (PrimaryKey), Nama, Bio Dalam hal ini, ID_Penulis di tabel Artikel adalah ForeignKey yang merujuk ke ID_Penulis di tabel Penulis, menunjukkan siapa penulis dari artikel tersebut.

Candidate Key

Definisi

Candidate Key adalah kunci yang memenuhi syarat untuk menjadi PrimaryKey di sebuah tabel basis data relasional. Ini berarti kunci tersebut mampu mengidentifikasi setiap baris dalam tabel secara unik. Namun, dari sekumpulan Candidate Keys, biasanya hanya satu yang dipilih sebagai PrimaryKey. Candidate Keys yang tidak dipilih sebagai PrimaryKey dikenal sebagai Alternate Keys.

Karakteristik utama dari Candidate Key

  1. Keunikan: Seperti PrimaryKey, setiap Candidate Key harus unik di seluruh tabel. Ini berarti tidak ada dua baris yang boleh memiliki nilai Candidate Key yang sama.
  2. Tidak boleh bernilai NULL: Sebuah Candidate Key tidak boleh memiliki nilai NULL karena tujuannya adalah untuk mengidentifikasi setiap baris secara unik.
  3. Minimalitas: Candidate Key harus seminimal mungkin. Artinya, jika Anda memiliki kombinasi kolom sebagai Candidate Key, menghapus salah satu kolom dari kombinasi tersebut harus menghilangkan sifat keunikannya.

Fungsi utama dari Candidate Key

  1. Pengidentifikasi Potensial: Meskipun Candidate Key mungkin tidak selalu digunakan sebagai PrimaryKey, ia tetap memenuhi fungsi dasar PrimaryKey yaitu mengidentifikasi setiap baris secara unik.
  2. Basis untuk Relasi: Meskipun jarang, dalam beberapa skenario, Candidate Keys (terutama Alternate Keys) bisa digunakan untuk membentuk relasi dengan tabel lain.

Perbedaan dengan konsep lain

  1. Candidate Key vs. PrimaryKey: Kedua kunci ini memiliki sifat keunikan dan non-null. Namun, PrimaryKey adalah salah satu Candidate Key yang telah dipilih untuk mengidentifikasi setiap baris secara unik dalam tabel.
  2. Candidate Key vs. ForeignKey: Candidate Key dan PrimaryKey digunakan untuk mengidentifikasi baris dalam tabel, sedangkan ForeignKey digunakan untuk menunjukkan hubungan ke PrimaryKey di tabel lain

5 Contoh Candidate Key

  1. Tabel Pendaftaran:

Kolom: NomorRegistrasi, Email, NomorTelepon

Di sini, asumsikan bahwa setiap NomorRegistrasi, Email, dan NomorTelepon adalah unik untuk setiap individu. Oleh karena itu, masing-masing bisa berfungsi sebagai Candidate Key. Namun, mungkin NomorRegistrasi yang dipilih sebagai PrimaryKey karena lebih stabil dan tidak mungkin berubah seiring waktu.

  1. Tabel Kendaraan:

Kolom: NomorPlat, NomorRangka, NomorMesin

Semua kolom di atas dapat mengidentifikasi kendaraan secara unik. Di antara mereka, NomorPlat mungkin yang paling sering digunakan sebagai PrimaryKey, tetapi NomorRangka dan NomorMesin tetap sebagai Candidate Keys.

  1. Tabel Buku:

Kolom: ISBN, KodeBuku, Judul

Meskipun Judul bisa unik (dalam kasus tertentu), ISBN adalah pilihan yang jelas untuk PrimaryKey karena standar internasional. Namun, jika KodeBuku juga unik, itu juga menjadi Candidate Key.

  1. Tabel Produk:

Kolom: IDProduk, KodeBarang, UPC (Universal Product Code)

Semua tiga kolom di atas dapat berfungsi sebagai identifikasi unik produk. Namun, IDProduk mungkin yang paling sering digunakan sebagai PrimaryKey untuk keperluan internal, sementara KodeBarang dan UPC adalah Candidate Keys lainnya.

  1. Tabel Pelajar:

Kolom: IDPelajar, NomorInduk, Email

Di sini, IDPelajar mungkin dipilih sebagai PrimaryKey untuk keperluan database, tetapi NomorInduk (yang mungkin digunakan sebagai identifikasi resmi di lembaga pendidikan) dan Email (jika setiap pelajar memiliki email unik) adalah Candidate Keys lainnya.


메타데이터
post_id
72be0c82711e
slug
apa-itu-primarykey-kunci-utama-foreignkey-kunci-asing-candidate-key-72be0c82711e
url
https://medium.com/@if22.rizkynugraha/apa-itu-primarykey-kunci-utama-foreignkey-kunci-asing-candidate-key-72be0c82711e
canonical_url
https://medium.com/@if22.rizkynugraha/apa-itu-primarykey-kunci-utama-foreignkey-kunci-asing-candidate-key-72be0c82711e
author_url
https://medium.com/@if22.rizkynugraha
status
ok
fetched_at
2026-08-08 16:22:23