我所处的情况是我有一组现有的表,其中Integers递增为Ids。我现在已经为每个表添加了一个GUID作为新的PK。
我有一张主表
dbo.ParentTable(GUID - PK, ParentTableId INT, Name VARHCHAR)
和子表
dbo.ChildTable(GUID - PK, ParentTableId INT, other fields.....)
并且希望基于ParentTableId在两者之间创建关系(主要是因为.Net的LINQ to SQL将建立关系)。 我意识到我不能在两者之间建立FK关系,因为他们现在拥有GUIDS for PK。 我应该更新子表中的GUID以便它们链接回其父表,还是可以基于预先存在的ParentId列创建关系?
两者之间的关系是一对多(父对子),我正在使用SQL Server 2008。
答案 0 :(得分:1)
我认为您可能错误地认为您只能创建引用FOREIGN KEY
的{{1}}。实际上,您可以创建引用PRIMARY KEY
约束的FOREIGN KEY
,例如
UNIQUE
答案 1 :(得分:0)
我认为您不希望更新子表中的GUID以链接到父表单,因为这可能会破坏子表中的PK。我会做的是将子表中的“ParentTableId”列更改为GUID而不是INT。然后使用ParentTable.GUID< - >之间的关系更新子表。 ChildTable.ParentTableID。
答案 2 :(得分:0)
想要在两者之间建立关系(主要是因为.Net的LINQ to SQL会建立关系)
接受的答案很棒。但是,LinqToSql并不关心数据库中的内容。即使未定义FKey,您也可以add an association。