可以保存重复值的外键

Raj*_*mar 2 sql sql-server-2008

下表中的列product_rate_id需要从另一个表中引用为外键。\n但是,该product_rates表必须包含 的重复值product_rate_id。(旧系统,别\xe2\x80\x99别问为什么)

\n\n
CREATE TABLE product_rates\n(\n    row_id             INT  IDENTITY(1,1) NOT NULL,\n    product_rate_id    INT NOT NULL,\n    START_DATE         DATETIME NOT NULL,\n    end_date           DATETIME,\n   unit_rate          NUMERIC(18,6)\n)\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以问题是:您是否可以有一个被另一个表引用为外键的列包含重复值?\n有没有解决这个问题的方法?

\n

D S*_*ley 5

您是否可以有一个被另一个表引用为外键的列包含重复值?

否 - 外键约束必须引用唯一键。

您仍然可以保留对相关表中的值的(非外键)引用product_rate_id,但是您必须在查询时决定需要哪个相关记录(我假设使用start_date和之间的有效日期end_date