首页 > 解决方案 > 我可以在表中有 2 个外键指向同一列吗?

问题描述

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

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 指向同一列似乎是不可能的。在这种情况下,我应该以不同的方式设计我的数据库吗?

标签: sqlforeign-keys

解决方案


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


推荐阅读