Rumah > pangkalan data > tutorial mysql > Bilakah Anda Harus Menggunakan Kunci Asing pada Lajur Bukan Kunci Utama?

Bilakah Anda Harus Menggunakan Kunci Asing pada Lajur Bukan Kunci Utama?

Patricia Arquette
Lepaskan: 2025-01-15 10:56:44
asal
201 orang telah melayarinya

When Should You Use a Foreign Key to a Non-Primary Key Column?

Kekangan Kunci Asing dan Lajur Bukan Utama Utama

Pangkalan data perhubungan menggunakan kekangan utama asing untuk menegakkan integriti rujukan antara jadual. Walaupun kunci asing biasanya merujuk kepada kunci utama, terdapat keadaan yang memerlukan rujukan lajur bukan kunci utama.

Ilustrasi Senario

Mari kita periksa dua jadual, table1 dan table2:

<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

Di sini, perhubungan kunci asing dikehendaki antara table2 dan table1 menggunakan lajur AnotherID, yang bukan kunci utama dalam table1.

Menubuhkan Kunci Asing kepada Kunci Bukan Utama

Walaupun kurang kerap, mencipta kunci asing yang merujuk kepada lajur bukan kunci utama boleh dilaksanakan. Walau bagaimanapun, kekangan unik mesti dikuatkuasakan pada lajur bukan kunci utama:

<code class="language-sql">ALTER TABLE table1 ADD CONSTRAINT UQ_AnotherID UNIQUE (AnotherID);</code>
Salin selepas log masuk

Kekangan unik ini menjamin keunikan AnotherID nilai dalam table1, membolehkan penggunaannya sebagai sasaran utama asing.

Alternatif Disyorkan

Sebaik-baiknya, kunci asing harus merujuk kepada kunci utama untuk integriti rujukan yang lebih kukuh. Jika boleh, reka bentuk semula skema pangkalan data anda untuk menggunakan lajur table1 sebagai sasaran kunci asing dalam ID. Ini menghapuskan keperluan untuk mengurus kekangan unik pada lajur bukan kunci utama.table2

Atas ialah kandungan terperinci Bilakah Anda Harus Menggunakan Kunci Asing pada 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