Mengapa JOIN (Pengulangan Model Relasional)
Ulangi model relasional, tabel ternormalisasi, kunci asing, dan alasan JOIN menjadi penghubung yang menyusun kembali data dari berbagai tabel.
Mengapa JOIN (Pengulangan Model Relasional) adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.
Normalisasi dalam Satu Gambar
Alih-alih menduplikasi data, Anda memisahkannya ke beberapa tabel:
users— id, name, emailorders— id, user_id, total
Setiap pesanan merujuk pada pengguna berdasarkan id, bukan dengan menyimpan kembali nama dan email pengguna.
Mengapa Melakukan Normalisasi?
Manfaatnya:
- Tidak ada duplikasi—ubah email pengguna di satu tempat
- Tabel lebih kecil—tingkat keberhasilan cache lebih baik
- Kendala menegakkan hubungan
Kunci FOREIGN Menentukan Hubungan
Hubungan tersebut dideklarasikan dengan FOREIGN KEY:
CREATE TABLE orders (
id BIGSERIAL PRIMARY KEY,
user_id BIGINT NOT NULL REFERENCES users(id),
total NUMERIC(10,2) NOT NULL
);Merangkai Kembali Data dengan JOIN
Untuk menampilkan "nama pengguna pada setiap pesanan", Anda menggabungkan kembali tabel dengan JOIN:
SELECT o.id, o.total, u.full_name, u.email
FROM orders o
JOIN users u ON u.id = o.user_id
ORDER BY o.id;Model Mental: Hasil Kali Silang yang Disaring
Secara konseptual, JOIN:
- Membentuk hasil kali silang dari dua tabel (setiap baris A dipasangkan dengan setiap baris B)
- Hanya mempertahankan pasangan yang kondisi ON-nya bernilai TRUE
Dalam praktiknya, basis data menggunakan penggabungan hash, penggabungan urut, atau penggabungan loop bersarang—tetapi hasilnya sama.
Satu-ke-Banyak
Satu pengguna dapat memiliki banyak pesanan. Sisi "banyak" menyimpan kunci FOREIGN.
-- Each order row points back to its user:
SELECT u.email, COUNT(o.id) AS order_count
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY u.id, u.email;Banyak-ke-Banyak melalui Tabel Penghubung
Tag ↔ Postingan: tambahkan tabel ketiga:
CREATE TABLE posts (id BIGSERIAL PRIMARY KEY, title TEXT);
CREATE TABLE tags (id BIGSERIAL PRIMARY KEY, name TEXT);
CREATE TABLE post_tags (
post_id BIGINT REFERENCES posts(id),
tag_id BIGINT REFERENCES tags(id),
PRIMARY KEY (post_id, tag_id)
);Membuat Kueri untuk Hubungan Banyak-ke-Banyak
Gunakan dua penggabungan untuk menyatukan semuanya:
SELECT p.title, t.name
FROM posts p
JOIN post_tags pt ON pt.post_id = p.id
JOIN tags t ON t.id = pt.tag_id
WHERE t.name = 'sql';Kapan Melakukan Denormalisasi
Denormalisasi (menduplikasi data) terkadang digunakan untuk performa—misalnya untuk menyimpan total yang telah dihitung, kolom teks lengkap, atau tampilan terwujud. Mulailah dengan data yang ternormalisasi; lakukan denormalisasi setelah mengukur kebutuhannya.
Penggabungan vs Subkueri
Banyak kueri JOIN dapat ditulis sebagai subkueri, dan sebaliknya. Gunakan bentuk yang lebih mudah dibaca; perencana kueri modern sering menghasilkan rencana yang sama.
Kunci FOREIGN Tidak Diterapkan Secara Otomatis
Anda harus mendeklarasikannya dengan REFERENCES. Bahkan dengan kendala FK, pengindeksan kolom FK adalah tanggung jawab YOUR—deklarasikan indeks secara eksplisit untuk performa penggabungan.
Ringkasan
JOIN merangkai kembali data yang dipisah ke beberapa tabel demi menjaga integritas.
- Kunci FOREIGN mendeklarasikan hubungan
- JOIN membalikkan normalisasi saat kueri dijalankan
- Hubungan satu-ke-banyak menggunakan FK di sisi "banyak", sedangkan hubungan banyak-ke-banyak menggunakan tabel penghubung
Pemeriksaan Singkat
Dalam hubungan satu-ke-banyak antara users dan orders, tabel mana yang menyimpan kolom kunci FOREIGN?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mengapa JOIN (Pengulangan Model Relasional)” gratis?
Ya — teks lengkap “Mengapa JOIN (Pengulangan Model Relasional)” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Mengapa JOIN (Pengulangan Model Relasional)”?
Ulangi model relasional, tabel ternormalisasi, kunci asing, dan alasan JOIN menjadi penghubung yang menyusun kembali data dari berbagai tabel. Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai SQL Academy?
Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Mengapa JOIN (Pengulangan Model Relasional)” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?
Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Mengapa JOIN (Pengulangan Model Relasional)
- Mekanisme INNER JOIN
- LEFT/RIGHT JOIN dan JOIN OUTER
- Self-Join dan Alias