Query MySQL untuk Melihat Foreign Key Suatu Tabel
Foreign Key adalah salah satu constraint populer yang dulu sering dipakai saat mendesain sistem tabel database. Namun dalam perkembangannya, Foreign Key ini memiliki kelebihan dan kekurangan. Kelebihannya adalah, konsistensi data pada setiap baris akan selalu terjaga, mengingat database akan selalu memberikan notifikasi kepada pengguna, jika terjadi inkonsistensi pada database.
Contoh:
Tabel Kelas, memiliki baris data 1, 2 dan 3. Tabel Siswa pada setiap baris data siswa, harus mengandung data kelas antara 1, 2 atau 3. Jika pengguna memasukkan kelas 4, maka database otomatis memberikan peringatan, bahwa kelas 4 tidak ada pada tabel kelas.
Kelebihan ini, awalnya cukup disukai oleh desainer database. Namun muncul kesulitan muncul saat melakukan deploy, dan ini menjadi kekurangan dari constraint Foreign Key ini, karena script harus dijalankan berurutan sesuai dengan tabel mana yang direferensi terlebih dahulu harus dibuat, dan tabel mana yang mereferensi tabel yang sudah terbuat.
Jika tabel memiliki jumlah yang kecil pada sistem yang sederhana, tentu kesulitan tersebut tidaklah terlalu susah untuk diaplikasikan. Namun, jika sudah terlalu kompleks, maka deploy akan sulit dilakukan, kecuali programmer disiplin untuk membuat dan mempersiapkan dokumentasi urutan script DDL setiap melakukan penambahan maupun perubahan. Namun, pada prakteknya, banyak programmer yang tidak terlalu mengindahkan aturan ini, sehingga banyak yang mengalami kesulitan saat fase deploynya.
Karena itu, jika desain database sudah terlanjur terbentuk, maka butuh query untuk mendeteksi foreign key pada masing-masing tabel dan kolom.
SELECT TABLE_NAME,
COLUMN_NAME,
CONSTRAINT_NAME,
REFERENCED_TABLE_NAME,
REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE 1=1
AND REFERENCED_TABLE_SCHEMA = 'nama_schema'
AND REFERENCED_TABLE_NAME IS NOT null
ORDER BY TABLE_NAME;
Komentar
Posting Komentar