以下是主键(Primary Key)与外键(Foreign Key)的核心区别及适用场景的总结,结合最新数据库实践整理:
一、本质区别
| 特性 | 主键 | 外键 |
|---|---|---|
| 核心作用 | 唯一标识本表记录(如身份证号) | 关联其他表的主键(如订单关联用户 ID) |
| 唯一性 | ✅ 值唯一且不可重复 | ❌ 值可重复(可关联同个主键) |
| 空值 | ❌ 不允许为空 | ✅ 允许为空(如'未绑定用户'订单) |
| 数量限制 | 每张表仅能有一个主键 | 每张表可有多个外键 |
| 数据约束 | 强制非空 + 唯一性 | 强制引用其他表的主键值(保证数据一致性) |
💡 通俗比喻:主键👉🏻 学生的学号(唯一标识一个人)外键👉🏻 成绩单上的学号(关联学生表,证明成绩属于谁)
二、实际应用场景
主键适用场景
- 标识核心实体:
- 用户表
users中的user_id(不可重复)
- 用户表
- 加速查询:
- 自动创建聚集索引,大幅提升检索效率。
外键适用场景
- 当用户被删除时,可自动级联删除其所有订单(需配置
ON DELETE CASCADE)。 - 建立表间关系:
- 电商系统中:订单表 → 商品表(通过
product_id外键关联)。
- 电商系统中:订单表 → 商品表(通过
- 维护数据一致性:
-- 订单表(orders)外键关联用户表(users)
ALTER TABLE orders ADD FOREIGN KEY (user_id) REFERENCES users(user_id);


