问题:
如何通过创建指向另一表中非主键列的外键来维护引用完整性?
解答:
虽然在创建外键时通常建议引用主键,但在特定条件下,可以创建指向非主键的外键。
解决方案:
要创建指向非主键的外键,被引用表中的目标列必须应用唯一约束。这意味着该列中的值必须唯一,以确保数据完整性。
示例:
考虑以下表结构:
<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中文网其他相关文章!