我有一个表交易代表两个基金之间的金融交易:
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指向同一列似乎是不可能的。在这种情况下,我应该以其他方式设计数据库吗?
答案 0 :(得分:0)
当然,对于同一张表的不同列,您可以具有两个外键。这是SQL的标准。
如所写,您的代码很好。当然,这假设存在一个funds
表,其中包含名为id
的列,其类型为int
。
Here是一个db <>小提琴,它表明您的代码有效。
答案 1 :(得分:0)
是的,可以在同一列中创建两个FK点。
但最佳做法是在表格中添加一列
交易在表格资金中用逗号分隔包含两列ID。