外键

外键用于表达表与表之间的引用关系,保证被引用的数据必须真实存在。

#type / concept #status / growing #tech / dev / backend #resource / database #resource / sql

[!info] related notes

外键

一句话定义

外键是表与表之间的引用约束,用来保证引用目标真实存在。

核心机制 / 工作原理

外键会把一张表中的某列,和另一张表中的主键或候选键关联起来。

它的核心价值是引用完整性:

  • 不能引用不存在的父记录
  • 删除或更新父记录时,可以定义相应策略
  • 降低孤儿数据和脏数据出现的概率

最小例子 / 最小场景

CREATE TABLE orders (
  id BIGINT PRIMARY KEY,
  user_id BIGINT NOT NULL,
  CONSTRAINT fk_orders_user
    FOREIGN KEY (user_id) REFERENCES users(id)
);

这里 orders.user_id 只能引用真实存在的 users.id

边界与易混淆点

  • 外键的主要价值不是“方便 join”,而是保证关系正确。
  • 有些团队因为迁移或性能顾虑不启用外键,但这不等于外键没有建模价值。
  • 外键是数据库层规则,不应该完全依赖应用代码手工模拟。
创建于 2026/5/5 更新于 2026/5/27