Ada beberapa siswa bertanya, Pak bisa tidak di MySQL diterapkan konsep Foreign Key dan
Referential Integrity seperti halnya di MS. Access?. Memang dalam MS. Access kita bisa
melakukan setting relasi antar tabel, yang menggambarkan hubungan PRIMARY KEY dan
FOREIGN KEY antar tabel.
Sebagai contoh, misalkan dalam kasus pengambilan matakuliah mahasiswa. Dalam kasus ini
misalkan terdapat tabel induk bernama MHS yang di dalamnya terdapat field NIM,
NAMAMHS. Tabel induk yang lain adalah MK untuk menyimpan data matakuliah dengan
field-fieldnya KODEMK, NAMAMK. Dalam hal ini field NIM dan KODEMK masing-masing
adalah primary key pada tabel MHS dan MK. Selanjutnya ada tabel lain bernama
AMBILMK dengan field NIM, KODEMK, NILAI yang digunakan untuk menyimpan data
pengambilan matakuliah mahasiswa. Nah dalam hal ini, field NIM dan KODEMK keduanya
adalah bertindak sebagai FOREIGN KEY.
MHS MK
FOREIGN KEY FOREIGN KEY
NIM KODEMK
NAMAMHS NAMAMK
AMBILMK
NIM
REFERENCE
KODEMK
NILAI REFERENCE
Selanjutnya dalam MS. Access terdapat pula fasilitas untuk mengimplementasikan referensial
integrity. Misalkan, kita ubah data salah satu kode NIM mahasiswa dalam tabel induk MHS.
Nah secara otomatis proses update ini juga terjadi di tabel AMBILMK yaitu pada data yang
terkait NIM tersebut. Begitu pula pada proses penghapusan. Sebagai contoh misalkan kita hapus
salah satu kode matakuliah di tabel MK, maka secara otomatis data yang terkait dengan kode
matakuliah tersebut pada tabel AMBILMK akan terhapus.
Nah.. bagaimana dengan MySQL? Kira-kira bisa tidak diterapkan kedua hal di atas seperti
halnya MS. Access? Saya jawab TENTU SAJA BISA.
Ya untuk menerapkan konsep FOREIGN KEY dan REFERENTIAL INTEGRITY ini, kita
harus mensetting MySQL nya bisa support untuk tabel bertipe INNODB.
Page 1 of 6
Foreign key adalah primary key pada suatu tabel yang dimasukkan pada tabel lain dan dijadikan
salah satu key pada tabel tersebut.
References menunjukkan bahwa foreign key di suatu tabel merupakan key pada tabel lain. Pada
perubahan suatu record baik itu update atau delete, dapat diikuti dengan kata : cascade, restrict
atau set null. Kita bisa atur sesuai kebutuhan.
Contoh :
- on update CASCADE on delete RESTRICT
- on update RESTRICT on delete SET NULL
OK sekarang kita coba untuk studi kasus. Kita akan membuat database untuk keperluan
pengambilan matakuliah mahasiswa seperti pada kasus di atas. Berikut ini, adalah perintah SQL
untuk membuat tabel-tabelnya.
CREATE TABLE mk
(
kodeMK varchar(3),
namaMK varchar(20),
PRIMARY KEY (kodeMK)
) TYPE = INNODB;
Perhatikan kedua perintah SQL di atas. Karena kita akan membuat tabel bertipe INNODB, maka
masing-masing perintah SQL diberikan perintah TYPE = INNODB;
Page 2 of 6
Tabel tersebut terdapat dua primary key yaitu NIM dan KODEMK (bila tidak bisa ada 2 primary
key, maka jadikan salah satunya ke unique). Sedangkan field NIM ini juga merupakan foreign
key yang direferensikan dari field NIM yang ada dalam tabel MHS. Oleh karena itu tambahkan
perintah FOREIGN KEY (nim) REFERENCES mhs (nim). Selanjutnya apa maksud dari ON
DELETE CASCADE? Perintah ini maksudnya bila ada data NIM yang dihapus pada tabel
MHS, maka secara otomatis data NIM yang ada dalam tabel AMBILMK ini juga akan terhapus.
Sedangkan ON UPDATE CASCADE digunakan untuk proses update otomatis pada NIM
dalam tabel AMBILMK, apabila NIM yang ada di tabel MHS ini diupdate.
Hal yang sama juga kita terapkan untuk tabel AMBILMK. Dalam hal ini, KODEMK adalah
sebagai foreign key yang direfensikan dari KODEMK yang ada dalam tabel MK.
Page 3 of 6
Sekarang coba Anda masukkan data-data berikut ini pada tabel MHS
NIM NAMAMHS
M0197001 Rosihan Ari Yuana
M0197002 Dwi Amalia Fitriani
M0197003 Faza Fauzan
M0197004 Nada Hasanah
M0197005 Muh. Ahsani Taqwim
KODEMK NAMAMK
M01 Database
M02 OOP
Nah untuk mengecek referensial integrity, sekarang kita coba masukkan data pada tabel
AMBILMK.
Ketika perintah SQL di atas dijalankan, data dapat dimasukkan ke tabel AMBILMK dengan
sukses. Kita lihat bahwa NIM M0197001 terdapat dalam tabel MHS, begitu pula pada kode
matakuliah M01 yang ada pada tabel MK.
Nah perintah di atas akan menghasilkan error. Hal ini disebabkan NIM M0197006 tidak ada
dalam tabel MHS.
Page 4 of 6
Sekarang kita coba melakukan proses update. Kita akan mengupdate NIM M0197001 menjadi
M0197010 yang ada dalam tabel MHS.
NIM NAMAMHS
M0197010 Rosihan Ari Yuana
M0197002 Dwi Amalia Fitriani
M0197003 Faza Fauzan
M0197004 Nada Hasanah
M0197005 Muh. Ahsani Taqwim
Sekarang Anda coba lihat isi tabel AMBILMK. Pastilah isinya menjadi berikut ini
Selanjutnya kita coba update untuk KODEMK yang ada dalam tabel MK. Misalnya akan diubah
kode mk M01 menjadi M09.
KODEMK NAMAMK
M09 Database
M02 OOP
Nah bila kita lihat data di tabel AMBILMK, pastilah isinya menjadi
Page 5 of 6
Bagaimana dengan proses penghapusan? Kita cek aja sekarang kita coba hapus data
mahasiswa berNIM M0197010 dalam tabel MHS.
NIM NAMAMHS
M0197002 Dwi Amalia Fitriani
M0197003 Faza Fauzan
M0197004 Nada Hasanah
M0197005 Muh. Ahsani Taqwim
Sekarang bila kita lihat isi tabel AMBILMK, pastilah menjadi kosong karena data pengambilan
matakuliah terkait dengan mahasiswa NIM M0197010 ini ikut terhapus.
Relasi adalah hubungan antara tabel yang merepresentasikan hubungan antar obyek di dunia nyata.
Atribut adalah ciri-ciri kualitatif yang dimiliki oleh suatu obyek, yang mencerminkan sifat-sifat dari
obyek tersebut. Field menyatakan data terkecil yang memiliki makna. Istilah lain untuk field yaitu
elemen data, kolom item.
Record/tuple atau Rekaman data, merupakan kumpulan elemen data, atau kumpulan beberapa nilai
Atribut, atau kumpulan Field-data yang mewakili satu Entitas secara lengkap. Misalnya: Entitas
pegawai memiliki record: NIP, Nama, Alamat, Pangkat, Jabatan, dsb.
InnoDB
Innodb adalah jenis storage engine MYSQL yang di gunakan untuk menyimpan data yang sangat besar,
lebih dari MYISAM. Tapi INNODB juga punya kekurangan yaitu membutuhkan Resource Hardware
yang lebih tinggi.
MyISAM
Tipe tabel MyISAM merupakan tipe tabel yang sederhana, stabil dan mudah digunakan.
Jika kita akan menyimpan data sederhana yang tidak terlalu rumit, maka gunakanlah tipe tabel ini.
Page 6 of 6