我有一个名为Followers的表,其中包含一个PK列和两个FK列,它们将存储名为User的表的整数。但是我不希望在列中复制值 - 两个FK的组合需要始终不同。我该怎么做?
答案 0 :(得分:1)
为两列创建单个唯一键
答案 1 :(得分:0)
独特的index或constraint将解决您的问题。独特的约束在幕后实现为唯一索引,因此您选择任一解决方案都是微不足道的。
为了演示,让我们假设以下设计方案。
create table User (
Id int identity primary key,
name varchar(255) not null
);
go
create table Follower (
Id int identity primary key,
UserId int foreign key references User(Id),
FollowerId int foreign key references User(Id)
);
go
确保UserId
&的唯一性FollowerId
添加以下唯一索引。
create unique index ux_follower_userid_followerid
on Follower
(
UsrId
,FollowerId
);
go
请注意,通常还建议在外键列上包含非聚簇索引以便于连接。