Anda di halaman 1dari 6

Foreign Key, Relationship dan Referential Integrity di MySQL

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.

Yang menjadi pertanyaan adalah, Bagaimana cara melakukannya?.

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.

Perintah SQL untuk membuat tabel MHS

CREATE TABLE mhs


(
nim varchar(8),
namaMhs varchar(20),
PRIMARY KEY (nim)
) TYPE = INNODB;

Perintah SQL untuk membuat tabel MK

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;

Sekarang, kita lanjutkan untuk membuat tabel untuk ambilMK.

CREATE TABLE ambilMK


(
nim varchar(8),
kodeMK varchar(3),
nilai float(3,2),
PRIMARY KEY (nim, kodeMK),
FOREIGN KEY (nim) REFERENCES mhs (nim) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (kodeMK) REFERENCES mk (kodeMK) ON DELETE CASCADE ON UPDATE
CASCADE
) 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.

Hasilnya kalau dilihat pada menu Designer

Page 3 of 6
Sekarang coba Anda masukkan data-data berikut ini pada tabel MHS

INSERT INTO mhs (NIM ,NAMAMHS)


VALUES ('M0197001', ' Rosihan Ari Yuana'),
('M0197002', 'Dwi Amalia Fitriani'),
('M0197003', 'Faza Fauzan'),
('M0197004', 'Nada Hasanah'),
('M0197005', 'Muh. Ahsani Taqwim');

NIM NAMAMHS
M0197001 Rosihan Ari Yuana
M0197002 Dwi Amalia Fitriani
M0197003 Faza Fauzan
M0197004 Nada Hasanah
M0197005 Muh. Ahsani Taqwim

Masukkan pula data pada tabel MK

INSERT INTO mk (KODEMK ,NAMAMK)


VALUES ('M01', 'Database'),
('M02', 'OOP');

KODEMK NAMAMK
M01 Database
M02 OOP

Nah untuk mengecek referensial integrity, sekarang kita coba masukkan data pada tabel
AMBILMK.

INSERT INTO ambilmk VALUES ('M0197001', 'M01', 3.0);

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.

Sehingga isi tabel AMBILMK menjadi

NIM KODEMK NILAI


M0197001 M01 3.0

Sekarang kita coba masukkan data berikut ini

INSERT INTO ambilmk VALUES ('M0197006', 'M01', 3.0);

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.

UPDATE mhs SET nim = 'M0197010' WHERE nim = 'M0197001';

Hasil query di atas pada tabel MHS menjadi

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

NIM KODEMK NILAI


M0197010 M01 3.0

Selanjutnya kita coba update untuk KODEMK yang ada dalam tabel MK. Misalnya akan diubah
kode mk M01 menjadi M09.

UPDATE mk SET kodeMK = 'M09' WHERE kodeMK = 'M01';

Hasil query di atas pada tabel MK adalah

KODEMK NAMAMK
M09 Database
M02 OOP

Nah bila kita lihat data di tabel AMBILMK, pastilah isinya menjadi

NIM KODEMK NILAI


M0197010 M09 3.0

Page 5 of 6
Bagaimana dengan proses penghapusan? Kita cek aja sekarang kita coba hapus data
mahasiswa berNIM M0197010 dalam tabel MHS.

DELETE FROM mhs WHERE nim = 'M0197010';

Hasil dari query SQL di atas pada tabel MHS adalah

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.

Beberapa fasilitas yang bisa dilakukan oleh Innodb diantaranya :


Cascade On Delete : fasilitas untuk melakukan delete ketika nilai pada reference di hapus
Sedangkan Cascade on Update : fasilitas yang melakukan update otomatis pada table yang mengacu ke
tabel tersebut

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

Anda mungkin juga menyukai