Bagaimana cara menambahkan foreign key? Simak panduan berikut ini.
Dalam MySQL, proses ini tidak serumit yang dibayangkan. Anda hanya perlu memahami cara mendefinisikan relasi antar tabel agar data dapat saling terhubung secara otomatis.
Sebelum mengetahui cara menambahkan atau menghapus foreign key, pahami dulu definisi, fungsi, dan perbedaan antara primary key dan foreign key agar implementasi di database lebih tepat dan bebas error.
Daftar Isi Artikel
ToggleApa Itu Foreign Key?
Foreign key adalah sebuah atribut atau sebuah gabungan dari atribut yang terdapat di dalam sebuah tabel dan digunakan untuk menciptakan hubungan atau relasi dari dua tabel.
Dalam dunia database, keberadaan dan penggunaan dari foreign key ini akan merujuk pada sebuah kunci primer dimana posisinya terdapat pada tabel pertama atau bisa juga dikenal dengan tabel master.
Perbedaan antara Primary Key dengan Foreign Key
Primary Key adalah kolom atau kombinasi kolom dalam sebuah tabel yang bersifat unik dan tidak boleh bernilai kosong, berfungsi untuk mengidentifikasi setiap baris data secara eksklusif. Satu tabel hanya boleh memiliki satu primary key.
Sedangkan Foreign Key adalah kolom yang digunakan untuk membuat hubungan dengan tabel lain. Foreign key mengacu pada primary key di tabel lain, sehingga membantu menjaga konsistensi data dan memastikan bahwa nilai yang dimasukkan sesuai dengan data di tabel terkait.
Dengan kata lain, primary key untuk identitas data, sementara foreign key untuk menghubungkan data antar tabel.
Fungsi Foreign Key
Berikut fungsi foreign key yang penting untuk Anda ketahui:
1. Database bersifat konsisten dan pertahankan integritas referensi.
Saat gunakan kunci asing, maka dengan otomatis database bisa konsisten untuk mempertahankan integritas referensial. Kondisi ini membuat database mampu melakukan monitor pada setiap data yang dimasukkan.
2. Mudah dalam melihat rancangan fisik database
Saat Anda sudah menetapkan kunci primer pada tabel utama dan kunci asing di tabel kedua, maka kondisi tersebut sudah memudahkan Anda dalam melihat sebuah rancangan fisik database dengan komponen yang memang saling berkaitan.
3. Kolom tabel akan lebih mudah dilakukan pengolahan
Saat membuat kolom dengan kunci asing, Anda bisa lebih mudah melakukan sebuah operasi pengolahan dari setiap data yang sudah tersimpan pada database. Data yang tersimpan memang sudah saling berkaitan satu dengan yang lainnya.
4. Mampu bangun hubungan yang saling berperan
Kunci asing bisa membangun sebuah hubungan dari antar baris yang memang mempunyai peran penting dalam normalisasi sebuah relasional database. Tahap inilah kunci asing akan melakukan akses tabel lain dan melakukan sortir database.
Syarat Membuat Foreign Key
Sebelum mulai menambahkan foreign key, penting untuk memahami syarat dan aturan dasar yang harus dipenuhi agar hubungan antar tabel tetap konsisten dan aman.
- Kesesuaian Tipe Data: Kolom foreign key harus memiliki tipe data yang sama atau kompatibel dengan primary key di tabel referensi agar pencocokan data berjalan tanpa error.
- Primary Key pada Tabel Referensi: Tabel yang dirujuk harus memiliki primary key atau kolom unik agar setiap nilai foreign key memiliki padanan yang valid dan integritas data terjaga.
- Konsistensi dan Aturan Referential Integrity: Foreign key harus mengikuti aturan referential integrity, seperti ON DELETE atau ON UPDATE, untuk mencegah data menjadi tidak konsisten saat tabel referensi berubah.
Langkah-Langkah Menambahkan Foreign Key pada Tabel MySQL
Berikut cara mudah menambahkan foreign key.
Langkah 1: Membuat Tabel dengan Primary Key
Pertama, buat tabel yang akan menjadi referensi dan pastikan memiliki primary key. Primary key ini akan menjadi acuan foreign key di tabel lain. Contohnya:
| CREATE TABLE customers ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), email VARCHAR(100)); |
Di sini, kolom id adalah primary key yang unik untuk setiap pelanggan.
Langkah 2: Membuat Tabel yang Akan Mengacu ke Tabel Lain
Selanjutnya, buat tabel baru yang akan memiliki foreign key mengacu pada tabel sebelumnya. Contohnya:
| CREATE TABLE orders ( order_id INT AUTO_INCREMENT PRIMARY KEY, order_date DATE, customer_id INT, FOREIGN KEY (customer_id) REFERENCES customers(id)); |
Dalam contoh ini, customer_id di tabel orders adalah foreign key yang mengacu pada kolom id di tabel customers. Dengan begitu, setiap order selalu terkait dengan pelanggan yang valid.
Langkah 3: Menambahkan Foreign Key pada Tabel yang Sudah Ada
Jika tabel sudah dibuat dan ingin menambahkan foreign key, gunakan perintah ALTER TABLE seperti ini:
| ALTER TABLE ordersADD CONSTRAINT fk_customer FOREIGN KEY (customer_id) REFERENCES customers(id); |
Di sini, fk_customer adalah nama constraint untuk foreign key, sehingga memudahkan pengelolaan dan referensi di kemudian hari.
Cara Menghapus Foreign Key

Menghapus foreign key di MySQL sebenarnya mudah, tapi harus hati-hati agar tidak merusak integritas data. Berikut langkah-langkahnya:
1. Cek Nama Foreign Key
Sebelum menghapus, pastikan mengetahui nama foreign key yang ingin dihapus. Kamu bisa mengeceknya dengan perintah:
SHOW CREATE TABLE nama_tabel;
Perintah ini akan menampilkan struktur tabel beserta nama foreign key.
2. Hapus Foreign Key
Setelah mengetahui nama foreign key, gunakan perintah ALTER TABLE untuk menghapusnya:
ALTER TABLE nama_tabel DROP FOREIGN KEY nama_foreign_key;
Setelah dieksekusi, kolom tersebut tidak lagi terikat dengan tabel referensi.
3. Periksa Kembali Tabel
Pastikan foreign key sudah terhapus dengan menjalankan kembali:
SHOW CREATE TABLE nama_tabel;
Ini membantu memastikan bahwa perubahan telah berhasil dan integritas tabel tetap terjaga.
Contoh Kasus Nyata
Misalnya, kamu memiliki tabel orders yang memiliki foreign key fk_customer_id mengacu pada tabel customers. Jika perusahaan ingin menghapus relasi ini karena proses integrasi data baru, langkahnya adalah:
ALTER TABLE orders DROP FOREIGN KEY fk_customer_id;
Setelah perintah dijalankan, kolom customer_id di tabel orders tetap ada, tetapi tidak lagi terikat dengan tabel customers. Hal ini berguna saat kamu ingin mengubah struktur database tanpa kehilangan data di kolom terkait.
Tips dan Best Practices dalam Mengelola Foreign Key
Gunakan nama constraint deskriptif untuk mempermudah identifikasi. Hindari mengubah struktur tabel setelah menambahkan foreign key karena dapat menyebabkan kesalahan integritas data.
Selalu backup database sebelum melakukan penghapusan atau modifikasi. Pastikan tipe data kolom foreign key sesuai dengan kolom primary key yang dirujuk. Gunakan mesin penyimpanan seperti InnoDB yang mendukung foreign key.
Tambahkan indeks untuk meningkatkan performa query, dan dokumentasikan hubungan antar tabel untuk memudahkan pengelolaan skema database.
Kesalahan Umum dan Cara Mengatasinya
Praktik ini membantu menjaga integritas data sambil memungkinkan operasi penghapusan yang lebih fleksibel. Berikut penjelasan lengkapnya;
1. Error: Cannot add foreign key constraint
Penyebab: Kolom foreign key tidak memiliki tipe data yang sama dengan kolom primary key di tabel yang dirujuk.
Solusi: Periksa kesesuaian tipe data dan panjang kolom antara foreign key dan primary key. Pastikan keduanya cocok sebelum menambahkan foreign key.
2. Error: Cannot delete or update a parent row
Penyebab: Tabel yang dirujuk memiliki data yang terhubung, sehingga penghapusan atau pembaruan baris di tabel induk tidak dapat dilakukan.
Solusi: Gunakan opsi ON DELETE CASCADE pada definisi foreign key untuk menghapus data terkait secara otomatis ketika baris di tabel induk dihapus:
Menegaskan Peran Foreign Key dalam Desain Database
Foreign key memang bukan atribut utama seperti primary key, tetapi menjadi penopang integritas referensial yang menghubungkan tabel parent–child, memudahkan normalisasi, dan menjaga konsistensi data saat aplikasi berkembang.
Jika Anda ingin mempraktikkan konsep ini dari dasar hingga implementasi nyata (relasi, constraint, desain skema), lanjutkan belajar lewat complete series Kursus SQL Database di ITBOX.


