选择数据库表的主键(Primary Key)是数据库设计中最核心的一步,直接影响数据完整性、查询性能、可维护性和扩展性。下面从原则、常见方案、避坑建议三个层面说明。
一个合格的主键应满足:
id BIGINT AUTO_INCREMENT PRIMARY KEY
优点
缺点
/user/123 可知用户数)适用场景
✅ 最推荐默认方案
id CHAR(36) PRIMARY KEY
优点
缺点
优化方案
UUIDv7(时间有序)BINARY(16) 存储适用场景
id_number VARCHAR(18) PRIMARY KEY -- 身份证号
email VARCHAR(255) PRIMARY KEY
优点
缺点
⚠️ 一般不推荐作为主键
✅ 可设为 唯一索引(UNIQUE)
PRIMARY KEY (user_id, role_id)
优点
缺点
适用场景
64位:时间戳 + 机器ID + 序列号
优点
缺点
适用场景
BIGINT 而非 INT(防溢出)UNIQUE| 场景 | 推荐主键 |
|---|---|
| 单体应用 | 自增 BIGINT |
| 分布式系统 | Snowflake / UUIDv7 |
| 关联表 | 复合主键 |
| 业务强约束 | 业务字段 + UNIQUE |
| 高安全 | UUID |
如果你愿意,可以告诉我:
我可以帮你直接设计具体表结构。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。