Mencari Relasi Foreign Key ke Tabel MySQL

Di aplikasi yang kita buat, biasanya ada fitur untuk menghapus data atau record tertentu. Bila kita menggunakan database relasional yang memiliki fitur referential integrity, kita akan dicegah bila data yang ingin kita hapus memiliki relasi ke data lain.

Contohnya, kita punya tabel Produk, yang kolom idnya digunakan sebagai foreign key oleh tabel Penjualan. Dengan demikian, pada waktu ingin menghapus data Produk, terlebih dulu kita cek ke tabel Penjualan, apakah ada data transaksi yang berelasi ke Produk yang ingin kita hapus.

Akan menjadi masalah bila aplikasi kita sudah besar, tabelnya ada ratusan. Bagaimana cara kita mencari tabel mana saja yang memiliki relasi ke tabel Produk? Tentunya tidak mungkin dicek satu-persatu.

Dengan bantuan paman Google, berikut adalah cara mendapatkannya untuk database MySQL.

Pertama, login dulu ke MySQL

mysql -u root -p
Password: 
mysql>

Kemudian, gunakan database information_schema

use information_schema

Terakhir, jalankan query SQL berikut

SELECT TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,
REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME 
FROM KEY_COLUMN_USAGE 
WHERE REFERENCED_TABLE_NAME = 'produk' 
AND REFERENCED_COLUMN_NAME = 'id' 
AND TABLE_SCHEMA='db_penjualan';

Inilah hasilnya

+-------------------------------------------------------------------------------------------+
| TABLE_NAME         | COLUMN_NAME | CONSTRAINT_NAME     | REFERENCED_TABLE_NAME | REFERENCED_COLUMN_NAME |
+-------------------------------------------------------------------------------------------+
| penjualan          | id_produk   | fk_penjualan_produk | produk                | id                     |
| stok               | id_produk   | fk_stok_produk      | produk                | id                     |
+-------------------------------------------------------------------------------------------+

Penjelasan:

  • Table Name : Nama Tabel yang memiliki referensi
  • Column Name : Nama Kolom yang merupakan foreign key
  • Constraint Name : Nama constraint foreign key
  • Referenced Table Name : Nama tabel yang dituju
  • Referenced Column Name : Nama kolom yang dituju foreign key

Demikian sekilas tutorial. Semoga bermanfaat dalam membuat validasi.