Rumah >pangkalan data >tutorial mysql >Bolehkah Kunci Asing Merujuk Indeks Bukan Unik dalam MySQL?

Bolehkah Kunci Asing Merujuk Indeks Bukan Unik dalam MySQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-08 08:47:42870semak imbas

Can Foreign Keys Reference Non-Unique Indexes in MySQL?

Kekangan kunci asing dan indeks bukan unik dalam MySQL

Walaupun kunci asing secara amnya dianggap mewujudkan hubungan satu dengan satu, dalam beberapa kes hubungan ini tidak dikuatkuasakan dengan ketat. Tingkah laku ini adalah biasa dalam senario tertentu, terutamanya apabila menggunakan MySQL.

Dalam MySQL, kekangan kunci asing boleh merujuk indeks bukan unik dalam jadual yang dirujuk. Ini bermakna satu baris dalam jadual rujukan boleh memadankan berbilang baris dalam jadual rujukan berdasarkan lajur indeks.

Penyimpangan yang kelihatan daripada prinsip satu sama satu ini tidak melemahkan tujuan kekangan utama asing. Ia hanya membenarkan tafsiran yang berbeza tentang keunikan. Daripada memerlukan padanan tepat, pangkalan data menganggapnya mencukupi bahawa sekurang-kurangnya satu rekod sepadan dengan nilai kunci asing.

Walau bagaimanapun, pastikan anda mempertimbangkan kesan penggunaan kunci asing pada lajur bukan unik. Tingkah laku "ON DELETE CASCADE" menjadi kurang jelas dalam kes ini kerana mungkin terdapat lebih daripada satu rekod sepadan yang perlu dipadamkan.

Untuk mengelakkan kemungkinan kekeliruan dan kesan yang tidak diingini, adalah amat disyorkan untuk memetik kekunci UNIK (termasuk PRIMER) dan BUKAN NULL apabila mentakrifkan kekangan kunci asing. Ini memastikan tingkah laku yang tidak jelas dan mengelakkan kekaburan dalam perhubungan data.

Atas ialah kandungan terperinci Bolehkah Kunci Asing Merujuk Indeks Bukan Unik dalam MySQL?. 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