如何将复合主键引用到单个字段中?

时间:2014-11-16 09:57:19

标签: sql sql-server composite-primary-key

我在表1中得到了这个复合主键:

Table 1: Applicant

CreationDate PK
FamilyId PK
MemberId PK 

我需要在表2中创建一个外键来引用这个复合键。但我不想在表2中创建三个字段,而是将它们连接在一个字段中。

Table 2: Sales

SalesId int, 
ApplicantId  -- This should be "CreationDate-FamilyId-MemberId"

实现这一目标的可能方法有哪些?

注意:我知道我可以在表1中使用三列连接创建另一个字段但是我将有冗余信息

1 个答案:

答案 0 :(得分:1)

你要求的是等于说#34;我想将三条信息视为一条信息,而不是明确地将其作为一条信息"。这就是说它不可能。

也就是说,有办法实现你想要发生的事情

  • 创建代理键(即标识列)并将其用作FK参考
  • 创建一个计算列,该列是三列的串联,并将其用作FK参考

在其他条件相同的情况下(易于实施,政治等),我更喜欢第一个。你所拥有的是一个自然的钥匙,如果要在外部引用,它就不会成为一个好的PK。并不是说你不能用唯一的密钥强制执行唯一性;你可以而且应该。