Membangun Korelasi Antar Tabel Database Mysql Dengan Foreign Key


Setelah di tutorial sebelumnya dijelaskan ilustrasi perihal penggunaan foreign key pada tabel film, kini saya mencoba menuliskan implementasinya. 
Implementasi foreign key yang akan saya lakukan terlihat ibarat topologi tabel di bawah ini:


Maka langkah pertama saya akan menciptakan tabel-tabel yang menampung data tumpuan (tabel kategori dan tabel rak) terlebih dahulu gres menciptakan tabel data utama (tabel film) melalui langkah-langkah di bawah:

Saya masuk ke dalam shell MySQL Server dengan perintah:

 mysql -u root -p

kemudian saya memakai database mencar ilmu dengan perintah:

 use belajar;

kemudian saya buat tabel kategori dengan perintah:

 CREATE TABLE kategori (  id int PRIMARY Key AUTO_INCREMENT,  nama varchar(15)  );

kemudian saya akan buat tabel rak dengan perintah:


 CREATE TABLE rak (  id int PRIMARY Key AUTO_INCREMENT,  nama varchar(15)  );

dan yang terakhir saya akan buat tabel film dengan perintah:

 CREATE TABLE film (   id int(11) NOT NULL AUTO_INCREMENT,   nama varchar(50) NOT NULL,   id_rak int(11) NOT NULL,   id_kategori int(11) NOT NULL,   PRIMARY KEY (`id`),   KEY id_rak (`id_rak`),   KEY id_kategori (`id_kategori`),   CONSTRAINT id_kategori FOREIGN KEY (`id_kategori`) REFERENCES `kategori` (`id`),   CONSTRAINT id_rak FOREIGN KEY (`id_rak`) REFERENCES `rak` (`id`) );

sesudah itu saya coba memasukkan data ke dalam tabel kategori dengan query ibarat berikut:

 INSERT INTO kategori VALUES  (NULL, 'fiksi'),  (NULL, 'drama'),  (NULL, 'horor'),  (NULL, 'komedi'),   (NULL, 'action');


maka kesannya dikala saya menjalankan query SELECT di tabel kategori:

 SELECT * FROM kategori;

kesannya ibarat berikut:


kemudian saya juga memasukkan data ke dalam tabel rak dengan query berikut:

 INSERT INTO rak VALUES  (NULL, 'abc'),  (NULL, 'def'),  (NULL, 'ghi'),  (NULL, 'jkl');

maka kesannya dikala saya menjalankan query SELECT di tabel rak:

SELECT * FROM rak;

kesannya ibarat berikut:


sesudah itu saya akan memasukkan data ke dalam tabel utama  (tabel film) dengan query berikut:

 INSERT INTO film VALUES (NULL, 'Captain America', 1, 1);

maka kesannya dikala saya menjalankan query SELECT di tabel film:


 SELECT * FROM film;

kesannya ibarat berikut:


kemudian saya akan mencoba memasukkan data di tabel film ibarat berikut:

 INSERT INTO film VALUES (NULL, 'Iron Man', 5, 1);

maka kesannya error dengan output berikut:


hal ini dikarenakan id_rak yang bernilai 5 yang saya masukkan belum tersimpan di dalam tabel rak. Sehingga bila saya masukkan nilai 5 di dalam tabel rak, error tersebut tidak akan terjadi dan data film "Iron Man" akan tersimpan di dalam tabel film.

Berikut pembuktiannya:

saya memasukkan terlebih dahulu id 5 di tabel rak dengan query berikut:

 INSERT INTO rak VALUES (5, 'mno');

kemudian saya jalankan lagi query:

 INSERT INTO film VALUES (NULL, 'Iron Man', 5, 1); 

dan untuk melihat kesannya saya jalankan kembali query:

 SELECT * FROM film; 

maka kesannya adalah:


data film Iron Man dengan nomer Rak 5 sudah tersimpan di dalam tabel film.

Hal ini juga berlaku dikala memasukkan data di dalam kolom kategori.

Server akan mengecek dahulu apakah data yang akan dimasukkan ke dalam kolom id_kategori di tabel film sudah tersimpan terlebih dahulu di tabel kategori?

Jika benar sudah ada di tabel kategori, barulah kemudian terusan penyimpanan data yang akan dimasukkan ke tabel film diperbolehkan.

Sekarang anda sudah tahu bukan, fungsi FOREIGN KEY di MySQL? Foreign Key membatasi data yang akan disimpan pada suatu tabel dengan merujuk suatu data yang telah tersimpan sebelumnya dari tabel lainnya.






Sumber http://www.newbienote.com/

Mari berteman dengan saya

Follow my Instagram _yudha58

Subscribe to receive free email updates:

0 Response to "Membangun Korelasi Antar Tabel Database Mysql Dengan Foreign Key"

Posting Komentar