Rumah >pangkalan data >tutorial mysql >Bolehkah MySQL Foreign Keys Rujukan Indeks Bukan Unik, dan Apakah Implikasinya?

Bolehkah MySQL Foreign Keys Rujukan Indeks Bukan Unik, dan Apakah Implikasinya?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-08 09:01:42403semak imbas

Can MySQL Foreign Keys Reference Non-Unique Indices, and What are the Implications?

Rujukan kunci asing MySQL bukan indeks unik

Tidak seperti teori pangkalan data tradisional, MySQL membenarkan kekangan kunci asing untuk merujuk kunci bukan unik dalam jadual yang dirujuk. Ini boleh menyebabkan kekaburan dalam pelaksanaan kekangan, terutamanya apabila mengendalikan tingkah laku "ON DELETE CASCADE".

Memahami kekangan kunci asing

Kekangan kunci asing memastikan bahawa baris dalam jadual anak (Jadual1) merujuk kepada baris data yang sah dalam jadual induk (Jadual2). Lazimnya, kekangan ini memerlukan hubungan satu dengan satu antara lajur yang dirujuk (lajur2 dalam kedua-dua jadual).

Rujukan indeks bukan unik MySQL

Walau bagaimanapun, dalam MySQL, kunci asing boleh merujuk lajur bukan unik (lajur2 dalam Jadual2). Ini melonggarkan keperluan satu sama satu tradisional, membenarkan berbilang baris jadual anak merujuk nilai yang sama dalam lajur induk. Indeks bukan unik wujud untuk meningkatkan prestasi pertanyaan apabila mencari nilai yang mungkin wujud dalam berbilang baris.

Pertimbangan praktikal

Walaupun MySQL menyokong tingkah laku ini, atas sebab praktikal, kunci asing yang merujuk lajur bukan unik harus dielakkan. Apabila menggunakan gelagat "ON DELETE CASCADE", pemadaman baris dalam jadual induk (Jadual2) boleh menyebabkan pemadaman bertingkat bagi berbilang baris dalam jadual anak (Jadual1), yang mungkin mempunyai akibat yang tidak diingini.

Panduan Dokumentasi MySQL

Dokumentasi MySQL secara eksplisit menasihatkan agar tidak menggunakan kekunci asing yang merujuk kekunci bukan unik atau kekunci nullable. Ia mengesyorkan mengehadkan kunci asing untuk hanya merujuk kekunci unik dan bukan nol untuk mendapatkan tingkah laku yang jelas.

Atas ialah kandungan terperinci Bolehkah MySQL Foreign Keys Rujukan Indeks Bukan Unik, dan Apakah Implikasinya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn