我可以在表中有2个指向同一列的外键吗?

时间:2019-02-24 12:30:25

标签: sql foreign-keys

我有一个表交易代表两个基金之间的金融交易:

CREATE TABLE transact 
(
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    src_fund_id INT ,
    dest_fund_id INT ,
    units FLOAT, 
    FOREIGN KEY (src_fund_id) REFERENCES funds(id),
    FOREIGN KEY (dest_fund_id) REFERENCES funds(id)
);

来源和目标资金均来自同一张表Funds。使两个FK指向同一列似乎是不可能的。在这种情况下,我应该以其他方式设计数据库吗?

2 个答案:

答案 0 :(得分:0)

当然,对于同一张表的不同列,您可以具有两个外键。这是SQL的标准。

如所写,您的代码很好。当然,这假设存在一个funds表,其中包含名为id的列,其类型为int

Here是一个db <>小提琴,它表明您的代码有效。

答案 1 :(得分:0)

是的,可以在同一列中创建两个FK点。 但最佳做法是在表格中添加一列
交易在表格资金中用逗号分隔包含两列ID。