Dalam pengembangan basis data, foreign key (kunci asing) adalah salah satu fitur penting yang digunakan untuk membuat hubungan antara dua tabel atau lebih dalam basis data. Foreign key membantu memastikan integritas referensial dalam basis data dan memungkinkan pengguna untuk mengambil data dari beberapa tabel yang terhubung dengan menggunakan query SQL. Pada artikel ini, akan dijelaskan secara rinci tentang pengertian, cara kerja, dan manfaat dari foreign key.

Pengertian Foreign Key

Foreign key adalah kolom atau sekumpulan kolom dalam sebuah tabel yang digunakan untuk membentuk hubungan antara tabel ini dengan tabel lain di dalam basis data. Kolom yang menjadi foreign key mengandung nilai-nilai yang merujuk pada kolom primary key di tabel lain. Dalam basis data, foreign key digunakan untuk memastikan bahwa setiap baris data dalam tabel terhubung dengan baris data di tabel lain.

Cara Kerja Foreign Key

Dalam basis data, foreign key biasanya digunakan untuk membentuk hubungan antara dua tabel atau lebih. Tabel yang mengandung foreign key disebut sebagai tabel anak (child table), sementara tabel yang dihubungkan melalui primary key disebut sebagai tabel induk (parent table). Cara kerja foreign key dapat dijelaskan melalui contoh berikut:

Misalkan ada dua tabel dalam basis data: tabel “Customer” dan tabel “Order”. Tabel “Customer” memiliki kolom “CustomerID” sebagai primary key, sementara tabel “Order” memiliki kolom “CustomerID” sebagai foreign key. Dalam hal ini, kolom “CustomerID” di tabel “Order” mengacu pada kolom “CustomerID” di tabel “Customer”. Ketika sebuah data baru dimasukkan ke dalam tabel “Order”, basis data akan memeriksa apakah nilai yang dimasukkan ke kolom “CustomerID” sudah ada di tabel “Customer”. Jika tidak ada, maka basis data akan menolak data tersebut. Ini membantu memastikan bahwa setiap data dalam tabel “Order” merujuk pada data yang benar-benar ada dalam tabel “Customer”.

Contoh Penerapan Foreign Key

Misalkan kita memiliki dua tabel yaitu tabel “mahasiswa” dan tabel “matakuliah”, dan kita ingin membuat keterkaitan antara keduanya menggunakan foreign key. Kita dapat membuat tabel “mahasiswa” dan “matakuliah” dengan struktur sebagai berikut:

CREATE TABLE mahasiswa (
  nim INT PRIMARY KEY,
  nama VARCHAR(50) NOT NULL,
  alamat VARCHAR(100),
  id_matakuliah INT,
  FOREIGN KEY (id_matakuliah) REFERENCES matakuliah(id_matakuliah)
);

CREATE TABLE matakuliah (
  id_matakuliah INT PRIMARY KEY,
  nama_matakuliah VARCHAR(50) NOT NULL,
  sks INT NOT NULL
);

Pada tabel “mahasiswa”, kita menambahkan kolom “id_matakuliah” yang akan dijadikan foreign key yang mengacu pada kolom “id_matakuliah” pada tabel “matakuliah”. Hal ini akan menghubungkan data pada tabel “mahasiswa” dengan data pada tabel “matakuliah” sehingga kita dapat mengetahui matakuliah apa saja yang diambil oleh seorang mahasiswa.

Setelah tabel berhasil dibuat, kita dapat memasukkan data ke dalam tabel menggunakan perintah SQL berikut:

INSERT INTO mahasiswa (nim, nama, alamat, id_matakuliah)
VALUES (123456, 'Ani', 'Jl. Ahmad Yani', 1);

INSERT INTO mahasiswa (nim, nama, alamat, id_matakuliah)
VALUES (234567, 'Budi', 'Jl. S. Parman', 2);

INSERT INTO matakuliah (id_matakuliah, nama_matakuliah, sks)
VALUES (1, 'Matematika Diskrit', 3);

INSERT INTO matakuliah (id_matakuliah, nama_matakuliah, sks)
VALUES (2, 'Pemrograman Web', 4);

Dengan menggunakan foreign key, kita bisa memastikan bahwa data yang dimasukkan ke dalam tabel “mahasiswa” selalu mengacu pada data yang sudah ada pada tabel “matakuliah”. Hal ini sangat penting untuk menjaga integritas data pada sebuah basis data dan menghindari terjadinya inkonsistensi data.

Berikut adalah tampilan tabel “mahasiswa” dan “matakuliah” setelah berhasil dimasukkan data :

Tabel Mahasiswa

nimnamaalamatid_matakuliah
123456AniJl. Ahmad Yani1
234567BudiJl. S. Parman2

Tabel Matakuliah

id_matakuliahnama_matakuliahsks
1Matematika Diskrit3
2Pemrograman Web4