Hai.. bagaimana khabar sobat semuanya, semoga senantiasa dalam kebaikan dan tetap semangat belajar pemrograman web.
Pada kesempatan kali ini kita akan membahas bagaimana cara membuat, mengedit dan menghapus foreign key (FK) dengan bantuan phpMyAdmin. Tutorial yang akan sobat ikuti ini dilengkapi dengan berbagai ilustrasi gambar, dengan harapan pembahasan akan lebih detail sehingga mudah untuk diikuti dan difahami.
Artikel ini terdiri dari beberapa pembahasan, jika ingin langsung ke pembahasan yang diinginkan, silakan klik link berikut:
- 3 Syarat membuat foreign key: (1) Storage Engine InnoDb, (2) field sebagai index, (3) semua nilai pada field child table ada di field referensi pada parent table.
- Mengubah atau membuat Storage Engine menjadi InnoDB pada phpMyAdmin.
- Membuat foreign key dengan phpMyAdmin.
- Mengapa Link Relation View Tidak Muncul.
- Mengedit atau menghapus foreign key dengan phpMyAdmin.
- Error yang ditemui saat membuat foreign key.
I. Syarat Membuat Foreign Key
Sebelum membuat foreign key pada MySQL, terlebih dahulu perlu dipastikan bahwa syarat-syarat yang di butuhkan untuk membuat foreign key telah terpenuhi. Adapun syaratnya adalah sebagai berikut:
a Pastikan engine penyimpanan yang digunakan adalah InnoDB
Yang pertama kali harus dilakukan pada pembuatan foreign key (FK) adalah memastikan engine penyimpanan yang digunakan pada tabel adalah InnoDB, karena hanya engine ini yang mendukung fitur foreign key.
Untuk memastikan engine yang digunakan, dapat dilakukan dengan cara mengklik database yang diinginkan, pada daftar tabel yang muncul, lihat bagian type. Contoh pada gambar berikut ini:
b Pastikan field yang terlibat dijadikan sebagai index atau primary key
Untuk dapat membuat foreign key, syarat kedua yang harus dipenuhi adalah: baik field yang akan digunakan sebagai foreign key (pada child table) maupun field yang akan dijadikan referensi (pada parent table) harus dijadikan sebagai index atau primary key.
Cara mengecek apakah field telah ditambahakan sebagai index adalah: Jika menggunakan phpMyAdmin versi 4.4 keatas, akan muncul icon kunci warna abu abu di sebelah kanan nama field, sedangkan untuk versi 4.0 kebawah, kita harus klik link Index yang ada di bagian bawah dari daftar tabel, contoh seperti gambar berikut:
Melihat Index pada phpMyAdmin >= 4.4
Gambar 2. Icon Index Pada Field
Melihat index pada phpMyAdmin <= 4.0
c Semua nilai pada field yang akan dijadikan FK (child tabel), harus ada pada field referensi pada parent tabel
Syarat ketiga ini dapat dimisalkan kita akan membuat FK pada field id_produk
yang ada pada tabel sales
dengan referensi field id_produk
yang ada pada tabel produk
. Misal row pertama field id_produk
pada tabel sales
berisi nilai 1, row kedua 2 dan row ketiga 3, maka fileld id_produk
pada tabel produk
harus memuat ketiga nilai tersebut.
Merubah atau Membuat Storage Engine Menjadi InnoDB
Jika engine tabel belum innoDB, maka kita ubah terlebih dahulu menjadi InnoDB, caranya adalah:
- Jika tabel sudah terbentuk, klik tabel yang diinginkan, kemudian pilih tab Operations. Pada bagian Table Options terdapat pilihan Storage Engine, pilih InnoDB. Contoh seperti tampak pada gambar berikut:
- Ketika membuat tabel baru, pilih InnoDB pada pilihan Storage Engine yang ada di sebelah bawah. Contoh seperti pada gambar berikut:
II. Membuat Foreign Key Dengan phpMyAdmin
a Skema dan hubungan antar tabel
Setelah membahas syarat-syarat membuat foreign key, sampilah kita pada bagian inti dari artikel ini yaitu membuat foreign key. Untuk lebih memudahkan pemahaman, kita misalkan kita memiliki database online_shop
, didalamnya terdapat tabel sales
dengan field id_produk
dan id_pelanggan
, dimana:
- field
id_produk
merupakan referensi dari fieldid_produk
yang ada di tabelproduk.
- field
id_pelanggan
merupakan referensi dari fieldid_pelanggan
pada tabelpelanggan.
Struktur tabel dan hubungan antar tabel akan tampak seperti gambar berikut:
b Masuk ke halaman relation view pada phpMyAdmin
Langkah selanjutnya adalah masuk ke halaman Relation View pada tabel sales
, caranya: Pilih tabel (klik tabel sales) -> pilih tab Structure -> klik link Relation View, letak link Relation View berbeda beda tergantung versi phpMyAdmin nya. Contoh seperti pada gambar berikut ini:
Letak Link Relation View Pada phpMyAdmin <= 4.0
Letak Link Relation View Pada phpMyAdmin >= 4.4
Link Relation View Tidak Muncul
Untuk phpMyAdmin 4.4 keatas, jika tabel masih menggunakan engine MyISAM, maka link Relation View tidak akan muncul, sedangkan untuk phpMyAdmin versi 4.0 dan sebelumnya, link tersebut tetap ada, namun ketika di klik, kolom Foreign key constraint (INNODB) tidak muncul, seperti tampak pada gambar berikut (tabel ekspedisi):
c Pengisian parameter pada halaman relation view
Setelah masuk ke halaman relation view, langkah selanjutnya adalah pengisian parameter. Pengisian parameter untuk pembuatan foreign key pada field id_produk
dan id_pelanggan
tampak seperti gambar berikut:
Foreign Key Constraint Pada phpMyAdmin >= 4.4
Foreign Key Constraint Pada phpMyAdmin <= 4.0
Keterangan nomor:
- Isikan nama constraint, pilih nama yang mencerminkan relasinya, pada contoh kali ini kita beri nama
fk_sales_produk
, yang artinya foreign key field pada tabel sales ke field tabel produk. - Pilih field yang ingin dijadikan foreign key (phpMyAdmin >= 4.4).
- Pilih database dimana tabel yang mengandung field referensi berada.
- Pilih tabel dimana field referensi berada.
- Pilih field referensi yang akan kita tuju.
- Pada klausul ON DELETE, pilih CASCADE, yang berarti jika kita hapus salah satu row pada parent tabel (produk), maka row pada child tabel (sales) dengan id_produk yang sama akan ikut terhapus.
- Pada klausul ON UPDATE, pilih CASCADE, yang berarti jika kita update nilai field id_pelanggan pada tabel pelanggan, maka id_pelanggan yang sama pada tabel sales akan ikut terupdate.
selanjutnya klik save, jika berhasil maka muncul pesan bahwa query berhasil dieksekusi.
II. Mengedit Foreign Key dengan phpMyAdmin
Untuk mengedit foreign key yang telah kita buat, terlebih dahulu kita masuk ke halaman Relation View, dengan cara yang sama ketika ingin menambah foreign key (klik di sini), selanjutnya ubah parameter yang ada (contoh pada gambar 9), sesuai dengan yang kita inginkan, kemudian klik save/simpan.
III. Menghapus Foreign Key dengan phpMyAdmin
Terkadang kita ingin menghapus foreign key (FK) yang telah kita buat, baik karena sudah tidak digunakan lagi atau karena struktur field nya berubah. Untuk menghapus FK, terlebih dahulu masuk ke halaman Relation View (klik di sini), selanjutnya:
- Untuk phpMyAdmin versi <= 4.0 kosongkan pilihan pada Foreign key constraint (INNODB) kemudian klik save/simpan.
- Untuk phpMyAdmin versi >= 4.4 tinggal klik icon Drop yang berada pada sebelah kiri nama constraint.
IV. Error Pada Saat Membuat Foreign Key
Pada saat membuat foreign key terkadang muncul pesan error seperti ini:
ALTER TABLE `sales` ADD CONSTRAINT `fk_sales_pelanggan` FOREIGN KEY (`id_pelanggan`) REFERENCES `online_shop`.`pelanggan`(`id_pelanggan`) ON DELETE CASCADE ON UPDATE CASCADE;#1452 - Cannot add or update a child row: a foreign key constraint fails (`online_shop`.`#sql-ccc_e7`, CONSTRAINT `fk_sales_pelanggan` FOREIGN KEY (`id_pelanggan`) REFERENCES `pelanggan` (`id_pelanggan`) ON DELETE CASCADE ON UPDATE CASCADE)
error tersebut disebabkan karena nilai pada field yang digunakan sebagai foreign key pada child table tidak ada pada field yang digunakan sebagai referensi pada parent table.
Lebih spesifik, error tersebut terjadi karena terdapat nilai pada field id_pelanggan
(tabel sales
) yang tidak ada pada tabel pelanggan
, dimana field id_pelanggan
(tabel sales
) merupakan referensi dari field id_pelanggan
(tabel pelanggan
) .
Untuk mengatasi error tersebut, tambahkan nilai id_pelanggan
yang ada di tabel sales
namun belum ada di tabel pelanggan
.
Penutup
Pembuatan foreign key menjadi lebih mudah dengan bantuan phpMyAdmin karena terdapat Graphical User Interface (GUI) yang mudah di gunakan, namun seiring berkembangnya aplikasi, kemungkinan akan terjadi perubahan GUI pada versi-versi berikutnya, sehingga kemungkinan perlu penyesuaian lagi.
Demikian tutorial mengenai membuat, mengedit, dan menghapus foreign key dengan phpMyAdmin. Semoga bermanfaat.
Subscibe Now
Suka dengan artikel di Jagowebdev.com? jangan sampai ketinggalan, segera join ke milis kami untuk update informasi terbaru dari Jagowebdev.com
35 Feedback dari pembaca
like it 😉
Luar biasa penjelasannya. sangat detil. terima kasih.
Terimakasih Gan
izin sowan gan.. tutorial yang sangat bermanfaat
Mas, pas udah bikin foreign key nya kok data di tabel sales field id_produknya gak keisi otomatis ya?
Pada fk_sales_produk bagian ON UPDATE sudah CASCADE mbak?
kenapa setelah saya isi FK…saya jadi tidak bisa input data ke database melalui web y???
padahal sebelum isi Fk …input database dari web normal aj…
ON UPDATE udh CASCADE
ON DELETE udh CASCADE jg
masalahnya dimana y bos??
mohon bantuannya…makasi…
Coba query nya dijalankan di phpmyadmin atau software sqlmanager mas, datanya masuk tidak, jika ya brarti ada masalah di program nya, selanjutnya coba buat script sederhana untuk insert datanya
saya juga mengalami hal yg sama mas agus. kenapa bisa begitu ya? solusinya apa ya? mohn pencerahan. terima kasih
Maksudnya error yang sama ya mas? error tersebut terjadi bisanya karena kolom yang akan kita gunakan sebagai foreign key sudah terisi data, sehingga pastikan bahwa semua data pada kolom foreign key ada di tabel referensi
saya bikin relasi berhasil tapi kok tidak muncul garisnya kenapa ya?
Garis maksudnya apa ya mas? setahu saya tidak ada garis pada relasi
Untuk mengatasi error #1452 bisa lebih dijabarkan lagi ga om ? saya kurang mengerti penjelasan singkatnya 🙁 saya mentok error mulu 🙁
Itu karena data pada tabel foereign key tidak ada pada tabel parent nya mas, misal tabel a dengan kolom a1 memiliki referensi ke tabel b kolom b1, ketika data pada kolom a1 tidak ada pada kolom b1, maka muncul error tersebut
Semoga berkah gan Aamiin…
Amin… Terima Kasih mas…
Terimakasih. Sangat bermanfaat
Sama sama mas…
Terima kasih banyak sangat membantu sekali
Sama sama mas…
Mantap rinci penjelasannya
Terima kasih mas…
Bagus banget!! sangat bermanfaat, penerangan materinya rinci, Terima kasih banyak mas …
Sama sama mas…
Terima kasih atas apresiasinya
terima kasih banyak mas
Sama sama mas…
terimakasih ..
Mas saya mau nanya, setelah Table sudah berhasil di buat. Saat saya cek di table nya, data nya tidak auto fill ke dalam table nya. Itu kenapa ya mas? saat saya insert manual eh gabisa juga. Mohon Bantuan nya Mas…
Maksudnya bagaimana mas? Auto Increment?
Saya sangat berterima kasih banyak mas atas ilmu yg dibagikan mempermudah saya dalam pembuatan Tugas Akhir. Smoga web nya makin besar dan rezeki nya lancar
Aamiin, terima kasih mas…
kalo kita mau ngehubungin 2 tabel atau lebih tetapi 1 database itu dengan JOIN kan ya? id nya sudah saya buat PRIMARY KEY Auto increment, apakah perlu ditambah FOREIGN KEY ? karena saya daritadi mencoba selalu hanya salah satu tabel saja yang muncuk, terima kasih
Intinya KEY untuk integritas data mas seperti primary key dan foreign key. sedangkan SQL seperti JOIN tidak ada hubungannya dengan integritas data, kita cukup gabungkan saja tabel sesuai dengan kolom yang diinginkan, tidak perlu memperhatikan key, tapi memang dengan adanya foreign key, maka kita akan memiliki petunjuk kolom mana yang saling terhubung.
Kalau pertanyaannya foreign key perlu tidak, maka jawabannya wajib, jika ada tabel yang saling terhubung.
Mantap pak, materi yg gampang terlupa ini bolak balik jadinya :’D
Siap mas 😀