Modul III “Foreign Key Integrity Constraint”
Foreign Key Integrity Constraint adalah batasan key antar dua tabel atau lebih.
Diterapkan untuk menjaga konsistensi data dalam sistem. Untuk MySQL versi 5.0.x
Foreign Key baru di dukung untuk tabel tipe innoDB dan BDB. Sedangkan versi 5.1.x
semua tabel telah mendukung Foreign Key.
Secara default pada versi MySQL 5.0.x, tipe tabel yang digunakan adalah MyISAM.
Oleh karena itu, bila kita ingin menerapkan Foreign Key pada tabel yang dibuat,
maka harus di ubah tipe tabelnya terlebih dahulu, menggunakan perintah SQL
berikut :
Diterapkan untuk menjaga konsistensi data dalam sistem. Untuk MySQL versi 5.0.x
Foreign Key baru di dukung untuk tabel tipe innoDB dan BDB. Sedangkan versi 5.1.x
semua tabel telah mendukung Foreign Key.
Secara default pada versi MySQL 5.0.x, tipe tabel yang digunakan adalah MyISAM.
Oleh karena itu, bila kita ingin menerapkan Foreign Key pada tabel yang dibuat,
maka harus di ubah tipe tabelnya terlebih dahulu, menggunakan perintah SQL
berikut :
mysql>ALTER TABLE nama_table TYPE=innoDB;
untuk mengetahui perubahan yang telah terjadi
mysql>SHOW CREATE TABLE nama_table;
untuk mengetahui tipe tabel yang kita gunakan, perhatikan bagian ENGINE-nya.
Parent dan Child tabel
Yang dimaksud dengan parent tabel adalah tabel dimana field-fieldnya di
referensi oleh tabel lain. Sedangkan child tabel, adalah sebaliknya. Field - fieldnya
mereferensi ke field di tabel lain.
Yang dimaksud dengan parent tabel adalah tabel dimana field-fieldnya di
referensi oleh tabel lain. Sedangkan child tabel, adalah sebaliknya. Field - fieldnya
mereferensi ke field di tabel lain.
INDEX dan Foreign Key
Sebelum membuat foreign key, di MySQL. Kita harus membuat index u ntuk field -
field yang akan mereferensi. Contohnya field isbn dan cid di tabel order s. Untuk
membuat INDEX perhatikan perintah di bawah ini :
Sebelum membuat foreign key, di MySQL. Kita harus membuat index u ntuk field -
field yang akan mereferensi. Contohnya field isbn dan cid di tabel order s. Untuk
membuat INDEX perhatikan perintah di bawah ini :
mysql>ALTER TABLE orders ADD INDEX(isbn);
setelah itu, kita membuat Foreign Key :
setelah itu, kita membuat Foreign Key :
mysql>ALTER TABLE orders ADD FOREIGN KEY (isbn) REFERENCES
books(isbn) ON DELETE RESTRICT;
selain option diatas terdapat juga :
ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION]}
ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION]}
RESTRICT : Jika record di parent tabel di hapus atau di u p date maka akan gagal,
kalau ada record di child tabel.
CASCADE : Jika record di parent tabel di hapus atau di u p date maka record di child
tabel akan terupdate atau terhapus secara otomatis.
SET NULL : kalau record di parent tabel di hapus atau di u p date maka record di
child tabel akan di set ke NULL secara otomatis.
NO ACTION : sama dengan RESTRICT.
books(isbn) ON DELETE RESTRICT;
selain option diatas terdapat juga :
ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION]}
ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION]}
RESTRICT : Jika record di parent tabel di hapus atau di u p date maka akan gagal,
kalau ada record di child tabel.
CASCADE : Jika record di parent tabel di hapus atau di u p date maka record di child
tabel akan terupdate atau terhapus secara otomatis.
SET NULL : kalau record di parent tabel di hapus atau di u p date maka record di
child tabel akan di set ke NULL secara otomatis.
NO ACTION : sama dengan RESTRICT.
