Macam Jenis Key pada MySQL (Lengkap dengan Contoh)


Key (Kunci) dalam database adalah atribut atau kumpulan atribut yang membantu kita dalam mengidentifikasi baris (row/tuple) pada sebuah tabel dan/atau bersama tabel relasinya. Key memungkinkan kita menemukan hubungan antara dua tabel atau lebih, key juga membantu kita dalam mengidentifikasi baris (row) secara unik pada sebuah tabel. Makna unik disini adalah memastikan bahwa semua nilai / data pada kolom tidak memiliki duplikasi atau kesamaan, contohnya nomor induk mahasiswa, nomor induk pegawai, dsb. Namun ada juga key yang mengijinkan kita untuk menyimpan nilai yang sama dan dapat dilakukan secara berulang dengan tujuan untuk membangun hubungan dengan satu atau lebih tabel lainnya. Ada beberapa jenis keys (kunci) pada database mysql, diantaratanya adalah sebagai berikut:
  • Super key
  • Candidate Key
  • Primary Key
  • Alternate Key
  • Foreign Key
  • Composite Key
Untuk memahami macam jenis key pada mysql, perhatikan tabel mahasiswa berikut:

id_mhs npm nama email
1 12345 Arnold Wong arnoldwong442@mail.com
2 21922 Arnold Wong arnoldwong922@mail.com
3 83712 Brulee Yan yanbrulee33@mail.com

Super Key
Super key adalah satu atau lebih atribut pada sebuah tabel yang dapat mengidentifikasi baris (row / tuple) agar tidak memiliki nilai yang sama. Super key merupakan superset dari candidate key karena candidate key dipilih dari super key. Dari tabel diatas, kolom (attribute) yang diidentifikasikan sebagai super key adalah:

{id_mhs}
{npm}
{email}
{id_mhs, npm}
{id_mhs, name}
{id_mhs, email}
{npm, nama}
{npm email}
{id_mhs, npm, nama}
{id_mhs, npm, email}
{id_mhs, npm, nama, email}

Sedangkan kolom yang diidentifikasikan sebagai candidate key adalah:

id_mhs,
npm,
email,

Note: Mengapa email bisa dijadikan candidate key? Tentu saja bisa, meski satu user bisa memiliki banyak email namun ketika user tersebut melakukan registerasi maka hanya dapat menggunakan satu email sehingga tidak mungkin ada user lain yang memiliki email yang sama, sementara pada kolom nama tidak dapat dijadikan sebagai candidate key karena selain ada kemungkinan user dengan nama yang sama, bisa juga user tersebut melakukan registerasi dua kali dengan email yang berbeda.

Candidate Key
Candidate key adalah satu atau lebih atribut yang dapat mengidentifikasi baris (row / tuple) agar tidak memiliki nilai yang sama, lalu apa bedanya dengan superkey? Tabel berikut menggambarkan perbedaan candidate key dengan super key:

Key Super Key Candidate Key
Definisi Super key dapat digunakan untuk mengidentifikasi semua record pada sebuah relasi5 Candidate Key merupakan subset (himpunan bagian) dari super key
Penggunaan Super key tidak dapat menjadi candidate key Semua candidate key merupakan bagian dari super key
Seleksi Super key dipilih untuk menghasilkan candidate key Candidate key dipilih untuk menghasilkan primary key
Perbandingan Super key lebih dari candidate key Candidate key tidak lebih dari super key

Primary Key
Primary key adalah key yang dipilih dari candidate key sebagai kolom unik untuk mengidentifikasi baris pada sebuah tabel, kolom dengan primary key tidak boleh memiliki duplikasi data dan tidak boleh kosong (null), dari contoh diatas kolom yang dijadikan sebagai primary key adalah id_mhs, meskipun pada kolom npm dan email juga bisa namun biasanya kolom npm atau email memiliki kombinasi nilai yang rumit sehingga sulit diingat sedangkan id_mhs biasanya diisi dengan nomor urut dimulai dari satu sehingga membuatnya lebih mudah diingat. Lalu jika primary key dipilih dari candidate key, apakah ada perbedaan antara primary key dengan candidate key? Tentu ada, berikut perbedaan primary key dan candidate key:

Key Primary Key Candidate Key
Definisi Mengidentifikasi record secara unik dan tidak boleh kosong (null), sebuah tabel hanya dapat memiliki satu primary key Mengidentifikasi record secara unik, namun pada sebuah tabel dapat memiliki lebih dari satu candidate key seperti yang sudah dijelaskan
Null Tidak boleh kosong (null) Boleh null
Objektivitas Bagian terpenting dalam membangun relasi antar tabel Untuk menentukan kolom mana yang dapat dijadikan primary key
Seleksi Primary key adalah dipilih dari candidate key Candidate key "mungkin" atau "mungkin bukan" primary key

Alternate Key
Alternate Key merupakan candidate key yang tidak dipilih sebagai primary key sehingga dari contoh tabel diatas, selain id_mhs adalah alternate key

Composite Key
Composite key atau Composite Primary Key adalah sebuah tabel tabel yang memiliki dua primary key sekaligus yang tujuannya sama-sama mencegah record memiliki nilai duplikasi, dari contoh tabel diatas id_mhs, npm dan email bisa menjadi primary key karena ketiganya dapat diidentifikasi secara unik. Namun biasanya membuat primary key lebih dari satu ini jarang dilakukan karena mysql menyediakan unique key untuk juga mengidentifikasi record secara unik.

Foreign Key
Foreign key adalah key yang digunakan untuk menandai hubungan antara dua tabel atau lebih, tabel dengan foreign key disebut sebagai tabel anak (child) dan referensinya sebagai parent tabel. Untuk membuat foreign key diperlukan kolom yang akan menyimpan data berdasarkan tabel referensi, contohnya seperti tabel registerasi berikut:

id_reg id_mhs kode_reg npm email tanggal
1 1 16162716 12345 arnoldwong442@gmail.com 01/01/2021
2 1 16162716 12345 arnoldwong442@gmail.com 13/01/2021

Asumsikan tabel mahasiswa merupakan tabel induk dan tabel registerasi adalah tabel anak dimana pada tabel registerasi mengambil data dari tabel mahasiswa sebagai referensi. Berikut ini perbedaan antara Primary Key dengan Foreign Key:

Key Primary Key Foreign Key
Dasar Digunakan untuk mengidentifikasi data pada tabel secara unik Digunakan untuk menjaga hubungan antar tabel
Null Tidak boleh kosong (null) Boleh null
Duplikasi Tidak dapat memiliki record yang sama Dapat memiliki record yang sama
Index Di index Tidak di index
Tabel Dapat didefinisikan pada tabel sementara (temporary) Tidak dapat didefinisikan pada tabel sementara

Referensi:
Bayu Radityo

Seorang lulusan teknik informatika yang senang dalam berbagi ilmu pengetahuan, dan membuat karya digital berupa photomanipulation dan digital drawing. instagram external-link

Posting Komentar

Lebih baru Lebih lama