Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mencipta Kunci Asing kepada Lajur Bukan Kunci Utama?

Bagaimana untuk Mencipta Kunci Asing kepada Lajur Bukan Kunci Utama?

Linda Hamilton
Lepaskan: 2025-01-15 09:46:43
asal
522 orang telah melayarinya

How to Create a Foreign Key to a Non-Primary Key Column?

Buat kunci asing yang menunjuk kepada kunci bukan utama

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan