Pengertian dan Fungsi Dasar Foreign Key dalam MySQL
Foreign key (kunci tamu) adalah sebuah kolom atau sekumpulan kolom dalam suatu tabel database yang berfungsi untuk menghubungkan dan memastikan integritas data antara dua tabel yang saling berelasi. Kolom ini merujuk pada primary key (kunci utama) di tabel yang berbeda, sehingga sistem database dapat mencegah masuknya data asing atau tidak valid yang dapat merusak konsistensi relasi antar entitas.
Dalam penerapannya pada sistem nyata seperti pembuatan database perpustakaan menggunakan ERD (Entity Relationship Diagram), EERD, dan MySQL, penggunaan foreign key menjadi fondasi mutlak untuk menghubungkan tabel transaksi dengan tabel referensi utama seperti tabel anggota atau tabel buku.
Contoh Kasus: Implementasi Database Perpustakaan
Berdasarkan dokumentasi teknis pembuatan database perpustakaan, relasi antar tabel dibangun untuk mencatat aktivitas peminjaman buku. Tabel utama yang sering menggunakan foreign key adalah tabel transaksi peminjaman yang membutuhkan referensi ID dari tabel anggota dan tabel buku.
| Nama Tabel | Kolom Utama (Primary Key) | Kolom Referensi (Foreign Key) | Menuju Tabel / Kolom |
|---|---|---|---|
| tabel_buku | id_buku | - | - |
| tabel_anggota | id_anggota | - | - |
| tabel_peminjaman | id_peminjaman | id_buku, id_anggota | tabel_buku(id_buku), tabel_anggota(id_anggota) |
Sintaks Pembuatan Foreign Key di MySQL
Berikut adalah contoh kode SQL murni untuk membuat tabel dengan menerapkan foreign key saat proses pembuatan tabel (CREATE TABLE) maupun menambahkannya melalui perintah alter tabel.
-- Membuat tabel anggota
CREATE TABLE tabel_anggota (
id_anggota INT AUTO_INCREMENT PRIMARY KEY,
nama_anggota VARCHAR(100) NOT NULL
);
-- Membuat tabel buku
CREATE TABLE tabel_buku (
id_buku INT AUTO_INCREMENT PRIMARY KEY,
judul_buku VARCHAR(150) NOT NULL
);
-- Membuat tabel peminjaman dengan Foreign Key
CREATE TABLE tabel_peminjaman (
id_peminjaman INT AUTO_INCREMENT PRIMARY KEY,
tanggal_pinjam DATE,
id_anggota INT,
id_buku INT,
CONSTRAINT fk_anggota FOREIGN KEY (id_anggota) REFERENCES tabel_anggota(id_anggota) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_buku FOREIGN KEY (id_buku) REFERENCES tabel_buku(id_buku) ON DELETE CASCADE ON UPDATE CASCADE
);
Langkah-Langkah Implementasi Teknis
Agar penerapan foreign key pada database MySQL berjalan tanpa kendala error 1452 (23000): Cannot add or update a child row, ikuti tahapan teknis berikut:
- Pastikan mesin penyimpanan tabel menggunakan InnoDB karena MyISAM tidak mendukung foreign key constraints.
- Pastikan tipe data kolom foreign key sama persis dengan kolom primary key yang dirujuk (misalnya sama-sama
INTatauINT UNSIGNED). - Buat dan isi terlebih dahulu tabel induk (parent table) seperti
tabel_anggotadantabel_bukusebelum memasukkan data ke tabel anak (child table) sepertitabel_peminjaman. - Gunakan perintah
ON DELETE CASCADEatauON UPDATE CASCADEjika ingin perubahan atau penghapusan data induk otomatis berdampak pada data anak.
Troubleshooting Kendala Umum Foreign Key
Kesalahan paling sering terjadi saat mendefinisikan foreign key adalah perbedaan tipe data atau unsigned attribute pada kolom relasi. Jika Anda mendapati pesan error saat eksekusi query, periksa kembali struktur tabel menggunakan perintah DESCRIBE nama_tabel; untuk memastikan panjang dan jenis tipe data sudah 100% identik.