Rumah >pangkalan data >tutorial mysql >Bolehkah MySQL Foreign Keys Rujukan Indeks Bukan Unik, dan Apakah Implikasinya?
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!