自然主键 vs 代理主键

什么是自然主键,什么是代理主键

自然主键:业务本身就存在的,且具有明确意义的主键,比如身份证号,学号等
代理主键:由系统或数据库生成的,没有明确意义的主键(你无法说出这个主键和这条记录存在什么业务上的联系,只能说这个主键是这个记录的唯一标识符),比如 自增ID、雪花算法等

两者有啥区别

自然主键会因为业务原因发生改变,代理主键则不会因为业务原因发生改变,不出意外的话,代理主键永远不会变

这两种主键分别适合什么场景下使用

大部分情况下,都推荐使用代理主键,原因如下:

  1. 当主键一旦修改,所有引用的外键表都要跟着改,代价极大
  2. 一般情况下,代理主键为BIGINT或INT等整数类型,而自然主键为字符串类型,计算机在匹配整数时,远比匹配字符串要快

如果你能保证,这个自然主键几乎不会变化,比如字典表,再去考虑使用自然主键

posted @ 2026-08-24 20:38  LanceEst  阅读(8)  评论(0)    收藏  举报