我正在使用连接到SQL Server 2008 R2的SQL Server Management Studio。
User
的表格,其中包含Id
列(uniqueidentifier
)Role
的表格,其中包含Id
列(uniqueidentifier
)UserRolePair
的表格,其中有两列:UserId
和RoleId
。我需要每一行都是唯一的(每个用户没有重复的角色)。
这很简单 - 我只需右键单击,然后选择Indexes & Keys
并创建一个新的唯一键,该键由两列组成。
现在我需要做的是创建从UserId
到Id
表的User
列的外键,并从RoleId
创建一个外键到Id
表的Role
列。
但是当我从子菜单中选择Relationships
时,我明白了:
首先 - 为什么我这里有2个关系?
其次 - 当我想为每列创建一个新的外键单独时,我得到了这个:
我无法选择RoleId
Id
表的Role
列!
它说我需要为同一个表中的外键分配UserRole
表的两列。
解决方案是什么?
'独特'是什么导致了我的问题?
答案 0 :(得分:1)
最好的办法是使用T-SQL语句,而不是与视觉设计师一起努力。
a)创建从UserRolePair
到Role
的外键:
ALTER TABLE dbo.UserRolePair
ADD CONSTRAINT FK_UserRolePair_Role
FOREIGN KEY (RoleID) REFERENCES dbo.Role(ID)
b)创建从UserRolePair
到User
的外键:
ALTER TABLE dbo.UserRolePair
ADD CONSTRAINT FK_UserRolePair_User
FOREIGN KEY (UserID) REFERENCES dbo.User(ID)
只需在查询窗口中执行这些操作(确保在正确的数据库中!),您就完成了!