我所处的情况是我有一组现有表,其中Integers作为ID递增。现在,我已将GUID添加到每个表中作为新的PK。

我有一张主桌子

dbo.ParentTable(GUID - PK, ParentTableId INT, Name VARHCHAR)

和一个儿童桌子
dbo.ChildTable(GUID - PK, ParentTableId INT, other fields.....)

并希望在这两者之间建立关系(主要是因此,基于.Net的LINQ to SQL将建立实现),基于ParentTableId。
我意识到我无法在两者之间建立FK关系,因为它们现在具有PK的GUIDS。
我应该更新子表中的GUID,以便它们链接回其父表,还是可以基于现有的ParentId列创建关系?

两者之间的关系是一对多(父母与子女),我正在使用SQL Server 2008。

最佳答案

我认为您可能会误以为只能创建引用FOREIGN KEYPRIMARY KEY。实际上,您可以创建引用FOREIGN KEY约束的UNIQUE,例如

ALTER TABLE ParentTable ADD
   UNIQUE (ParentTableId);

ALTER TABLE ChildTable ADD
   FOREIGN KEY (ParentTableId)
   REFERENCES ParentTable (ParentTableId);

10-04 10:54