You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

0..1-to-0..1自引用关系:数据一致性与性能最佳实践咨询

处理0..1-to-0..1自引用关系的最佳实践(数据一致性与性能层面)

我想解决的问题是:在数据一致性与性能层面,处理0..1-to-0..1自引用关系的最佳实践是什么?

我的第一想法是给表添加一个自引用列:

ALTER TABLE Edata_auction
    ADD COLUMN IF NOT EXISTS extendedWith INT UNSIGNED;
ALTER TABLE Edata_auction
    ADD CONSTRAINT fk_extended_id FOREIGN KEY IF NOT EXISTS
          (extendedWith) REFERENCES Edata_auction(id);

但仔细思考后,这个方案存在两个明显问题:

  • 这实际上是多对一关系,而非我需要的0..1-to-0..1关系
  • 我需要在WHERE语句和PHP代码中检查是否有贷款关联到某条记录——是否需要为extendedWith添加索引?每个索引都会带来额外开销,而且几乎所有贷款都没有自链接,或许有更优的方案?

那我是否应该转而创建一张以(extended_loan_id, extending_loan_id)为复合主键的关联表?当仅指定其中一个ID时,单独通过extended_loan_id或extending_loan_id进行联表、过滤或查询是否高效?

补充业务逻辑:一笔贷款可通过新贷款展期。因此,任意贷款可无关联展期、被其他贷款展期、作为其他贷款的展期贷款,或同时具备两种关联。


内容的提问来源于stack exchange,提问作者Anton Duzenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 09:02:23