Modul Teori: Konsep Relasi dan JOIN dalam SQL
[!INFO] Topik Utama: Primary Key, Foreign Key, Jenis-jenis Relasi, dan Tipe-Tipe Perintah
JOIN. Tujuan: Dokumen ini berfungsi sebagai referensi teoritis untuk memahami konsep-konsep fundamental yang membangun hubungan antar tabel dan cara menggabungkan data dalam database relasional.
1. Konsep Kunci: Primary Key & Foreign Key
Relasi antar tabel dibangun di atas dua konsep fundamental yang menjamin integritas dan keterhubungan data.
a. Primary Key (PK)
- Definisi: Sebuah kolom (atau beberapa kolom) yang berfungsi sebagai identitas unik untuk setiap baris data dalam sebuah tabel.
- Sifat:
- Tidak Boleh NULL: Nilainya tidak boleh kosong.
- Harus Unik: Tidak boleh ada dua baris dengan nilai Primary Key yang sama.
- Analogi: Anggap seperti Nomor Induk Kependudukan (NIK) untuk setiap warga negara. Setiap orang punya satu NIK yang unik dan tidak mungkin sama dengan orang lain.
- Contoh: Kolom
idpada tabelsiswa, atauid_produkpada tabelproduk.
b. Foreign Key (FK)
- Definisi: Sebuah kolom (atau beberapa kolom) di satu tabel yang nilainya merujuk ke Primary Key di tabel lain.
- Fungsi: Berperan sebagai "benang penghubung" atau "jembatan" yang menciptakan relasi antar tabel.
- Analogi: Jika tabel
transaksimemiliki kolomid_produk, makaid_produktersebut adalah Foreign Key yang menunjuk ke Primary Key di tabelproduk. Ini memastikan bahwa setiap transaksi pasti terhubung ke produk yang valid. - Integritas Referensial: Foreign Key menjaga referential integrity, artinya:
- Anda tidak bisa memasukkan nilai Foreign Key yang tidak ada di Primary Key tabel induknya.
- Anda umumnya tidak bisa menghapus data di tabel induk jika data tersebut masih direferensikan oleh Foreign Key di tabel anak (kecuali ada aturan khusus seperti
ON DELETE CASCADE).
erDiagram
kategori {
int id PK "Primary Key"
varchar nama_kategori
}
produk {
int id PK "Primary Key"
varchar nama_produk
int harga
int id_kategori FK "Foreign Key"
}
kategori ||--o{ produk : "memiliki"
2. Tiga Jenis Relasi Database
Hubungan antar tabel dapat dikategorikan ke dalam tiga jenis utama.
a. One-to-Many (Satu-ke-Banyak)
Ini adalah jenis relasi yang paling umum. Satu baris di Tabel A bisa terhubung ke banyak baris di Tabel B, tetapi satu baris di Tabel B hanya terhubung ke satu baris di Tabel A.
- Contoh: Relasi antara
kategoridanproduk.- Satu kategori (misal: "Elektronik") bisa memiliki banyak produk.
- Tetapi, satu produk (misal: "Laptop ABC") hanya bisa berada di satu kategori.
- Implementasi: Tabel pada sisi "Many" (yaitu
produk) harus memiliki Foreign Key yang merujuk ke Primary Key di tabel sisi "One" (yaitukategori).
b. Many-to-Many (Banyak-ke-Banyak)
Banyak baris di Tabel A bisa terhubung ke banyak baris di Tabel B, dan sebaliknya.
- Contoh: Relasi antara
produkdantag.- Satu produk bisa memiliki banyak tag (misal: "promo", "terlaris", "baru").
- Satu tag (misal: "terlaris") bisa disematkan pada banyak produk.
- Implementasi: Relasi ini tidak bisa diimplementasikan secara langsung. Diperlukan sebuah tabel perantara (disebut juga junction table atau pivot table). Tabel ini akan berisi Foreign Key yang merujuk ke Primary Key dari kedua tabel yang dihubungkan. Misalnya, tabel
produk_tagyang isinyaid_produkdanid_tag.
c. One-to-One (Satu-ke-Satu)
Satu baris di Tabel A hanya terhubung ke satu baris di Tabel B. Relasi ini lebih jarang digunakan, seringkali untuk memisahkan data yang jarang diakses atau untuk alasan keamanan.
- Contoh: Relasi antara
siswadandetail_kontak_darurat.- Satu siswa hanya punya satu set data kontak darurat.
- Satu set data kontak darurat hanya dimiliki oleh satu siswa.
- Implementasi: Foreign Key bisa ditempatkan di salah satu tabel, dan biasanya kolom Foreign Key tersebut juga diberi constraint
UNIQUE.
3. Memahami Perintah JOIN
JOIN adalah perintah SQL yang digunakan untuk menggabungkan baris dari dua atau lebih tabel berdasarkan kolom yang berelasi.
a. INNER JOIN
- Fungsi: Mengembalikan baris data yang memiliki nilai yang cocok di kedua tabel. Jika ada data di satu tabel yang tidak punya pasangan di tabel lainnya, data tersebut tidak akan ditampilkan.
- Analogi: Seperti mencari irisan (intersection) dalam diagram Venn.
- Visualisasi:

b. LEFT JOIN (atau LEFT OUTER JOIN)
- Fungsi: Mengembalikan semua baris dari tabel kiri (tabel pertama yang disebut), dan baris yang cocok dari tabel kanan. Jika tidak ada kecocokan di tabel kanan, hasilnya akan
NULLuntuk kolom-kolom dari tabel kanan. - Kapan digunakan: Ketika Anda ingin melihat semua data dari satu tabel utama, terlepas dari apakah data itu punya relasi di tabel lain atau tidak. Contoh: "Tampilkan semua produk, dan jika produk itu pernah terjual, tampilkan juga data penjualannya."
- Visualisasi:

c. RIGHT JOIN (atau RIGHT OUTER JOIN)
- Fungsi: Kebalikan dari
LEFT JOIN. Mengembalikan semua baris dari tabel kanan (tabel kedua), dan baris yang cocok dari tabel kiri. Jika tidak ada kecocokan, hasilnyaNULLuntuk kolom-kolom dari tabel kiri. - Kapan digunakan: Jarang digunakan karena biasanya bisa ditulis ulang sebagai
LEFT JOINdengan menukar posisi tabel, yang seringkali lebih mudah dibaca. - Visualisasi:

d. FULL OUTER JOIN
- Fungsi: Mengembalikan semua baris ketika ada kecocokan di salah satu tabel (kiri atau kanan). Jika data di tabel kiri tidak punya pasangan di kanan, kolom kanan akan
NULL. Sebaliknya, jika data di tabel kanan tidak punya pasangan di kiri, kolom kiri akanNULL. - Kapan digunakan: Ketika Anda ingin melihat semua data dari kedua tabel tanpa ada yang hilang.
- Visualisasi:

Catatan: MySQL tidak mendukung
FULL OUTER JOINsecara langsung. Efek yang sama bisa dicapai dengan menggabungkanLEFT JOINdanRIGHT JOINmenggunakanUNION.
4. Referensi dan Dokumentasi Resmi
Untuk pemahaman yang lebih mendalam dan detail teknis, selalu rujuk ke dokumentasi resmi dari sistem database yang Anda gunakan.