Navicat Blog

Panduan untuk MySQL Foreign Key Constraint Jun 2, 2023 by Robert Gravelle

Selama proses normalisasi, grup field yang mewakili entitas yang berbeda dihapus dari tabel yang lebih besar dan/atau lebih sentral ke tabel terpisah. Field umum (biasanya ID) kemudian digunakan untuk mempertahankan hubungan mereka. Kita dapat melihat contoh di bawah ini:

film_id_fk (34K)

Dalam database relasional, integritas referensial antar tabel ditegakkan menggunakan constraint Foreign Key.

Blog ini akan membahas cara kerja Foreign Key serta cara membuat Constraint Foreign Key di MySQL menggunakan Navicat 16 for MySQL .

Tentang Hubungan Film dan Inventaris

Model yang kita lihat di intro menggambarkan hubungan satu-ke-banyak antara film dan tabel inventaris di mana entitas film (1 baris) dapat menautkan ke nol atau lebih entitas (baris) dalam tabel inventaris.

Tabel film disebut tabel parent atau tabel referensi, dan tabel inventaris dikenal sebagai tabel child atau tabel referensi. Dengan demikian, kolom Foreign Key dari tabel child sering merujuk ke kolom Primary Key dari tabel parent.

Dalam contoh ini, kita hanya berfokus pada satu relasi. Bahkan, tabel dapat memiliki lebih dari satu Foreign Key di mana setiap referensi Foreign Key ke Primary Key dari tabel parent yang berbeda.

Setelah Constraint Foreign Key diterapkan, kolom Foreign Key dari tabel turunan harus memiliki baris yang sesuai di kolom kunci parent dari tabel parent atau nilai di kolom Foreign Key ini harus NULL. Misalnya, setiap baris dalam tabel inventaris memiliki film_id yang ada di kolom film_id tabel film. Beberapa baris dalam tabel inventaris dapat memiliki film_id yang sama.

Di bagian selanjutnya kita akan membuat Constraint Foreign Key untuk hubungan ini di Navicat 16 for MySQL.

Membuat Constraint Foreign Key di Navicat

Di Navicat, Anda akan menemukan Constraint Foreign Key pada tab Foreign Key dari Desainer Tabel. Untuk membuat Foreign Key Constraint baru, buka tabel parent - dalam hal ini film - di Desainer Tabel dan klik tombol Tambahkan Foreign Key. Itu akan membuat baris baru di daftar Foreign Keys:

new_fk_on_film_table (39K)

Selanjutnya, pilih tabel "film" dari drop-down Field, tabel "inventory" dari drop-down Tabel Referensi dan "film_id" untuk Field yang Direferensikan:

new_fk_on_film_table_with_fields_populated (44K)

Langkah selanjutnya adalah memilih tindakan On Delete dan On Update. MySQL mendukung lima opsi referensial yang berbeda, sebagai berikut:

  • CASCADE: Ini digunakan saat kami menghapus atau memperbarui baris apa pun dari tabel parent, nilai baris yang cocok di tabel child akan dihapus atau diperbarui secara otomatis.
  • SET NULL: Ini digunakan ketika kita menghapus atau memperbarui baris apa pun dari tabel parent, nilai kolom Foreign Key di tabel child diatur ke NULL.
  • RESTRICT: Ini digunakan ketika kita menghapus atau memperbarui baris apa pun dari tabel parent yang memiliki baris yang cocok di tabel referensi (child), MySQL tidak mengizinkan untuk menghapus atau memperbarui baris di tabel parent.
  • NO ACTION: Ini mirip dengan RESTRICT. Tetapi ada satu perbedaan yaitu memeriksa integritas referensial setelah mencoba memodifikasi tabel.
  • SET DEFAULT: Parser MySQL mengenali tindakan ini. Namun, tabel InnoDB dan NDB keduanya menolak tindakan ini.

Mari ikuti contoh FK yang ada dan pilih tindakan On Delete dari RESTRICT dan tindakan On Update dari CASCADE:

new_fk_on_film_table_with_action_fields_populated (46K)

Terakhir, klik Menyimpan tombol untuk membuat Foreign Key yang baru. Perhatikan bahwa Navicat akan membuat nama untuk Anda jika Anda tidak mengisi Nama field.

Conclusion

Foreign Keys memainkan peran penting dalam menjaga integritas referensial antar tabel. Dengan demikian, satu harus dibuat untuk setiap hubungan tabel. Navicat 16 for MySQL membuatnya cukup mudah untuk mengelola Constraint Foreign Key Anda tanpa harus menulis perintah SQL apa pun.

Navicat Blog
Feed Entri
Arsip Blog
Bagikan