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)
- 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
Mahasiswamemiliki Primary KeyNIM. Di sini,Email_Kampusbisa menjadi Candidate Key. - Tabel
Mata_Kuliahadalah tabel penghubung. Ia memilik Primary KeyKode_MKdi tabel. - Tabel
KRSmemiliki Foreign KeyNIM_Mhsyang merujuk keNIMdi tabelMahasiswa, dan Foreign KeyKode_MKyang merujuk keKode_MKdi tabelMata_Kuliah. Kombinasi(NIM_Mhs, Kode_MK)bisa menjadi Primary Key untuk tabelKRS.
Contoh visualisasi di MySQL Workbench
Contoh 2: Sistem Perpustakaan
- Entitas:
Buku,Anggota,Peminjaman - Visualisasi di Workbench:
- Tabel
Bukumemiliki Primary KeyID_Buku.ISBNbisa menjadi Candidate Key. - Tabel
Anggotamemiliki Primary KeyID_Anggota.Email_Anggotabisa menjadi Candidate Key. - Tabel
Peminjamanmemiliki Foreign KeyID_Anggotayang merujuk ke tabelAnggota, dan Foreign KeyID_Bukuyang merujuk ke tabelBuku. Kombinasi(ID_Anggota, ID_Buku)bisa menjadi Primary Key untuk tabelPeminjaman.
Contoh visualisasi di MySQL Workbench
Contoh 3: Sistem Penjualan Online
- Entitas:
Produk,Pelanggan,Pesanan - Visualisasi di Workbench:
- Tabel
Produkmemiliki Primary KeyID_Produk.Kode_Produkbisa menjadi Candidate Key. - Tabel
Pelangganmemiliki Primary KeyID_Pelanggan.Email_Pelangganbisa menjadi Candidate Key. - Tabel
Pesananmemiliki Foreign KeyID_Pelangganyang merujuk ke tabelPelanggan, dan Foreign KeyID_Produkyang merujuk ke tabelProduk. Kombinasi(ID_Pelanggan, ID_Produk)bisa menjadi Primary Key untuk tabelPesanan.
Contoh visualisasi di MySQL Workbench
Contoh 4: Sistem Rumah Sakit
- Entitas:
Pasien,Dokter,Rekam_Medis - Visualisasi di Workbench:
- Tabel
Pasienmemiliki Primary KeyID_Pasien.No_Rekam_Medisjuga merupakan Candidate Key yang kuat. - Tabel
Doktermemiliki Primary KeyID_Dokter.No_SIP(Surat Izin Praktik) adalah Candidate Key. - Tabel
Rekam_Medismemiliki Primary KeyID_Rekam_Medis. Tabel ini memiliki dua Foreign Key:ID_Pasien(merujuk ke Pasien) danID_Dokter(merujuk ke Dokter).
Contoh visualisasi di MySQL Workbench
Contoh 5: Blog Sederhana
- Entitas:
user,Postingan,Komentar - Visualisasi di Workbench:
- Tabel
usermemiliki Primary Keyid_user.usernamedanemailadalah Candidate Key. - Tabel
Postinganmemiliki Primary Keyid_postingan. Tabel ini memiliki Foreign Keyid_useryang merujuk ke tabeluser. - Tabel
Komentarmemiliki Primary Keyid_komentar. Tabel ini memiliki dua Foreign Key:id_user(merujuk ke user yang mengomentari) danid_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!