具有OR构造的外键引用2列

时间:2015-12-22 11:25:34

标签: sql sql-server sql-server-2008 constraints foreign-key-relationship

我需要对我们的数据库进行一些迁移,但我遇到了问题。

我的表中的(AirportCodeDeparture)列可以从 Airport 表中引用 AirportCode AirportMetropolitanCode 注意:这并不意味着 AirportCodeDeparture AirportCode AND a AirportMetropolitanCode ,不,这是我问题的 OR 部分。

db scheme

所以我尝试创建一个与这种情况相对应的表,但我不知道如何实现外键引用的OR部分。

这就是我现在所拥有的:

CREATE TABLE FlightAllotment
(
    FlightAllotmentId smallint not null IDENTITY(1,1), CONSTRAINT PK_FlightAllotmentId PRIMARY KEY (FlightAllotmentId),

    AirportCodeDeparture char(5) not null, CONSTRAINT FK_FlightAllotment_AirportCodeDeparture FOREIGN KEY (AirportCodeDeparture) REFERENCES Airport(AirportCode) OR Airport(AirportMetropolitanCode),
)

这部分:REFERENCES Airport(AirportCode) OR Airport(AirportMetropolitanCode)

我已经尝试了

REFERENCES Airport(AirportCode) || Airport(AirportMetropolitanCode)

REFERENCES Airport(AirportCode || AirportMetropolitanCode)

REFERENCES Airport(AirportCode OR AirportMetropolitanCode)

1 个答案:

答案 0 :(得分:1)

你不能这样做,我害怕。 FK的目标需要是目标表上的唯一键,并且也只能是一列。没有OR允许。

这样做的一种方法是在机场为父级AirportMetropolitan输入,然后参考该条目,但我不知道那是多么明智。

另一种方法是让FlightAllotment.AirportDepartureCode成为机场的FK但可以为空,这样当你想使用AirportMetropolitan代码时就不必提供它。您还可以将FlightAllotment.AirportMetropolitanDepartureCode作为FK添加到AirportMetropolitan.AirportMetropolitanCode,也可以作为可以为空的列。

我担心这些是你的选择。