首頁 > 資料庫 > mysql教程 > 什麼時候應該對非主鍵列使用外鍵?

什麼時候應該對非主鍵列使用外鍵?

Patricia Arquette
發布: 2025-01-15 10:56:44
原創
200 人瀏覽過

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

外鍵約束與非主鍵列

關聯式資料庫利用外鍵約束來維護表之間的參考完整性。 雖然外鍵通常引用主鍵,但在某些情況下引用非主鍵列是必要的。

場景插圖

讓我們檢查兩個表,table1table2

<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>
登入後複製

此處,table2table1 之間需要使用 AnotherID 列建立外鍵關係,該列不是 table1 中的主鍵。

建立非主鍵的外鍵

雖然不太常見,但建立引用非主鍵列的外鍵是可行的。 但是,必須對非主鍵列強制執行唯一約束:

<code class="language-sql">ALTER TABLE table1 ADD CONSTRAINT UQ_AnotherID UNIQUE (AnotherID);</code>
登入後複製

此唯一約束保證 AnotherIDtable1 值的唯一性,使其能夠用作外鍵目標。

推薦替代方案

理想情況下,外鍵應該引用主鍵以獲得更強的參考完整性。 如果可能,請重新設計資料庫架構以利用 table1ID 欄位作為 table2 中的外鍵目標。這消除了管理非主鍵列的唯一約束的需要。

以上是什麼時候應該對非主鍵列使用外鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板