Rumah >pangkalan data >tutorial mysql >Bolehkah Kunci Asing Rujukan Berbilang Jadual dalam SQL?
Kekangan Utama Asing Polimorfik: Pendekatan Serbaguna
Kekangan kunci asing konvensional mewujudkan hubungan langsung antara dua jadual yang ditentukan. Walau bagaimanapun, bagaimana jika anda memerlukan hubungan polimorfik dengan lajur merujuk kepada salah satu daripada beberapa jadual induk yang mungkin?
Adakah Kunci Asing kepada Berbilang Jadual Mungkin?
Malangnya, jawapannya negatif. Kekangan kunci asing hanya boleh merujuk jadual induk tunggal. Had ini timbul daripada keperluan untuk integriti dan ketekalan data dalam sistem pangkalan data.
Pertimbangan Praktikal
Walaupun terdapat batasan yang wujud, terdapat pendekatan praktikal yang mencontohi tingkah laku seseorang kunci asing kepada berbilang jadual:
Contoh dalam MySQL dan PostgreSQL
Dalam MySQL, perkara berikut pernyataan mewujudkan jadual kesatuan:
<code class="sql">CREATE TABLE union_table AS SELECT * FROM subordinates UNION ALL SELECT * FROM products;</code>
Kekangan kunci asing dalam jadual anak kemudiannya ialah:
<code class="sql">ALTER TABLE images ADD FOREIGN KEY (person_id) REFERENCES union_table(id);</code>
Dalam PostgreSQL, pendekatan yang serupa digunakan:
<code class="sql">CREATE TABLE union_table AS SELECT * FROM subordinates UNION ALL SELECT * FROM products;</code>
Kekangan kunci asing menjadi:
<code class="sql">ALTER TABLE images ADD FOREIGN KEY (person_id) REFERENCES union_table(id);</code>
Kesimpulan
Walaupun kunci asing terus kepada berbilang jadual tidak boleh dilaksanakan, strategi alternatif membenarkan polimorfik hubungan kunci asing dalam sistem pangkalan data SQL. Strategi ini mengekalkan integriti data sambil menyediakan fleksibiliti untuk menampung berbilang jadual induk.
Atas ialah kandungan terperinci Bolehkah Kunci Asing Rujukan Berbilang Jadual dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!