Halo teman-teman semuanya, di seri kesebelas ini kita akan membahas tentang FOREIGN KEY dan bagaimana cara membuat relasi antar tabel dalam SQL. Konsep ini sangat penting saat kita membangun database yang datanya saling berkaitan — contohnya, data siswa yang berelasi dengan data jurusan, atau transaksi yang berelasi dengan data pelanggan.
Contoh Tabel
Untuk mempermudah pemahaman, kita akan membuat dua tabel:
-
Tabel jurusan
CREATE TABLE jurusan (
id INT PRIMARY KEY AUTO_INCREMENT,
nama_jurusan VARCHAR(50)
);
Isi data:
id |
nama_jurusan |
1 |
IPA |
2 |
IPS |
-
Tabel siswa
CREATE TABLE siswa (
id INT PRIMARY KEY AUTO_INCREMENT,
nama VARCHAR(50),
umur TINYINT,
kelas VARCHAR(20),
jurusan_id INT,
FOREIGN KEY (jurusan_id) REFERENCES jurusan(id)
);
Kolom jurusan_id
di tabel siswa
adalah foreign key yang merujuk ke kolom id
di tabel jurusan
.
Apa Itu FOREIGN KEY?
FOREIGN KEY adalah kolom dalam satu tabel yang digunakan untuk menghubungkan data ke tabel lain. Tujuannya adalah agar data tetap konsisten, saling terhubung, dan tidak terjadi data "liar" yang tidak valid.
Manfaat FOREIGN KEY:
- Menjaga integritas data antar tabel
- Mencegah data tidak valid (misalnya, siswa dengan jurusan yang tidak terdaftar)
- Membentuk hubungan antar entitas, seperti satu ke banyak (one-to-many)
Contoh: Menambahkan Data Berelasi
Tambahkan data ke tabel siswa
INSERT INTO siswa (nama, umur, kelas, jurusan_id)
VALUES ('Ali', 18, 'XII IPA 1', 1),
('Budi', 17, 'XI IPS 2', 2);
Hasil Tabel siswa
:
id |
nama |
umur |
kelas |
jurusan_id |
1 |
Ali |
18 |
XII IPA 1 |
1 |
2 |
Budi |
17 |
XI IPS 2 |
2 |
JOIN untuk Melihat Data Lengkap
Kalau kita ingin menampilkan nama jurusan berdasarkan jurusan_id
, kita bisa menggunakan JOIN:
SELECT siswa.nama, siswa.kelas, jurusan.nama_jurusan
FROM siswa
JOIN jurusan ON siswa.jurusan_id = jurusan.id;
Hasil:
nama |
kelas |
nama_jurusan |
Ali |
XII IPA 1 |
IPA |
Budi |
XI IPS 2 |
IPS |
Kesalahan yang Dihindari
Menambahkan data ke tabel siswa
dengan jurusan_id
yang tidak ada di tabel jurusan
akan gagal, karena foreign key tidak terpenuhi.
-- Akan error jika jurusan_id = 99 tidak ada
INSERT INTO siswa (nama, umur, kelas, jurusan_id)
VALUES ('Citra', 18, 'XII IPA 3', 99);
Kesimpulan
Di artikel ini, kita sudah belajar bahwa FOREIGN KEY adalah penghubung antar tabel di dalam database.
Di artikel berikutnya, kita akan mulai membahas berbagai jenis JOIN (seperti INNER JOIN, LEFT JOIN, dan RIGHT JOIN) untuk menampilkan data dari beberapa tabel sekaligus.
Terima Kasih