Soalan:
Bagaimana untuk mengekalkan integriti rujukan dengan mencipta kunci asing yang menunjuk ke lajur bukan kunci utama dalam jadual lain?
Jawapan:
Walaupun secara umumnya disyorkan untuk merujuk kunci utama semasa mencipta kunci asing, dalam keadaan tertentu adalah mungkin untuk mencipta kunci asing yang menghala ke kunci bukan utama.
Penyelesaian:
Untuk mencipta kunci asing yang menunjuk kepada kunci bukan utama, kekangan unik mesti digunakan pada lajur sasaran dalam jadual yang dirujuk. Ini bermakna bahawa nilai dalam lajur mestilah unik untuk memastikan integriti data.
Contoh:
Pertimbangkan struktur jadual berikut:
<code class="language-sql">CREATE TABLE table1 ( ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY, AnotherID INT NOT NULL, SomeData VARCHAR(100) NOT NULL ); CREATE TABLE table2 ( ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY, AnotherID INT NOT NULL, MoreData VARCHAR(30) NOT NULL, CONSTRAINT fk_table2_table1 FOREIGN KEY (AnotherID) REFERENCES table1 (AnotherID) );</code>
Dalam contoh ini, lajur AnotherID dalam jadual1 bukanlah kunci utama. Walau bagaimanapun, ia mempunyai kekangan unik yang membolehkan kami mencipta hubungan kunci asing antara jadual2 dan jadual1 menggunakan lajur AnotherID.
Alternatif:
Jika anda tidak boleh membuat kekangan unik pada lajur bukan kunci utama, pertimbangkan untuk menggunakan kunci utama jadual yang dirujuk sebagai kunci asing. Kaedah ini memastikan integriti pangkalan data yang lebih kukuh dan secara amnya disyorkan.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Kunci Asing kepada Lajur Bukan Kunci Utama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!