关系和多列/复合唯一键

时间:2014-07-03 13:21:19

标签: sql sql-server database foreign-key-relationship

我有一个问题,我需要在两个表之间创建一个关系,但唯一性只在两个表中的两个字段之间。这些值中的任何一个都不是唯一的。正在使用的数据库当前在SQL Server 2008 R2中。这是实际情况:

表B包含JobNum列,该列已是Table A的外键。 Table B还包含一个名为Shipment的列。此Shipment列本身并不是唯一的,但与JobNum配对时,复合材料是唯一的。 (JobNumSHIPMENT = UNIQUE)我知道我可以创建复合的唯一索引。但是,由于我继承了这个项目,因此已经存在一个主键,它只是一个自动递增的标识。 Table C包含JobNumShipment列,但两个表之间没有实际关系。

如何使用此复合唯一值将表B链接到表C.这是否需要使用连接表来完成?

1 个答案:

答案 0 :(得分:1)

外键可以包含多个列,只要两个表具有相同类型的相同两个字段;因此,您可以在表B中为JobNum和Shipment创建唯一键,并使其成为表C的外键:

CONSTRAINT fk_mrt_ot FOREIGN KEY (refcol1, refcol2)
                    REFERENCES OtherTable(col1, col2)
顺便说一下,如here

所示