Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menyertai Jadual Tanpa Kunci Asing Menggunakan Jadual Perantara?
Pangkalan data perhubungan selalunya memerlukan penyatuan jadual untuk menggabungkan data daripada pelbagai sumber. Walaupun kunci asing biasanya mentakrifkan perhubungan ini, ini tidak selalu berlaku. Panduan ini menerangkan cara untuk menyertai jadual secara tidak langsung menggunakan jadual perantara ketiga.
Bayangkan tiga jadual: Forests
, Species
dan Trees
. Forests
menyimpan nama dan lokasi hutan; Species
menyenaraikan spesies pokok dan jenis kayu; dan Trees
memperincikan pokok individu, termasuk spesiesnya dan hutan yang mereka diami.
Objektifnya adalah untuk menyertai Forests
dan Species
berdasarkan pokok yang mereka kongsi. Walau bagaimanapun, tiada pautan kunci asing langsung antara Forests
dan Species
. Sebaliknya, Trees
bertindak sebagai jambatan, mengandungi kunci asing yang merujuk kedua-dua Forests
dan Species
.
Penyelesaian terletak pada penggunaan jadual Trees
sebagai pautan perantara. Dengan menyertai Forests
dan Species
melalui Trees
, kami secara tidak langsung mewujudkan hubungan yang diingini.
Pertanyaan SQL ini menunjukkan gabungan tidak langsung:
<code class="language-sql">SELECT Forests.Fo_name, Species.Sp_name, Species.Sp_woodtype FROM Forests INNER JOIN Trees ON Forests.Fo_name = Trees.Tr_forest INNER JOIN Species ON Trees.Tr_species = Species.Sp_name WHERE Forests.Fo_loc = 'ARTIC' ORDER BY Forests.Fo_name, Species.Sp_name;</code>
Langkah pertanyaan ini:
INNER JOIN
menghubungkan Forests
dan Trees
menggunakan nama hutan yang sepadan.INNER JOIN
pautan Trees
dan Species
melalui nama spesies yang sepadan.WHERE
menapis hasil ke hutan di rantau 'ARTIC'.ORDER BY
mengisih output untuk kebolehbacaan.Kaedah ini menggabungkan jadual dengan berkesan tanpa sambungan kunci asing langsung dengan menggunakan jadual kongsi sebagai jambatan. Mengenal pasti lajur biasa yang memautkan jadual adalah penting untuk mewujudkan hubungan tidak langsung ini, membolehkan operasi gabungan yang kompleks walaupun tanpa kekangan kunci asing tradisional.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyertai Jadual Tanpa Kunci Asing Menggunakan Jadual Perantara?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!