問題:
如何透過建立指向另一表中非主鍵列的外鍵來維護參考完整性?
解答:
雖然在建立外鍵時通常建議引用主鍵,但在特定條件下,可以建立指向非主鍵的外鍵。
解:
要建立指向非主鍵的外鍵,被引用表中的目標列必須套用唯一限制。這意味著該列中的值必須唯一,以確保資料完整性。
範例:
考慮以下表格結構:
<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>
在這個範例中,table1 中的 AnotherID 欄位不是主鍵。但是,它具有唯一約束,允許我們使用 AnotherID 列在 table2 和 table1 之間建立外鍵關係。
替代方法:
如果無法在非主鍵列上建立唯一約束,請考慮改用被引用表的主鍵作為外鍵。這種方法確保更強的資料庫完整性,通常建議使用。
以上是如何為非主鍵列建立外鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!