- 主关键字(PRIMARY KEY):主键是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。
- 业务主键(自然主键):在数据库表中把具有业务逻辑含义的字段作为主键,称为“自然主键(Natural Key)”。
- 逻辑主键(代理主键):在数据库表中采用一个与当前表中逻辑信息无关的字段作为其主键,称为“代理主键”。
- 复合主键(联合主键):通过两个或者多个字段的组合作为主键
使用逻辑主键的主要原因是:业务主键一旦改变则系统中关联该主键部分的修改将会是不可避免的,并且引用越多改动越大。而使用逻辑主键则需要修改主键相关的业务逻辑即可,减少了业务主键相关改变对系统的影响。
使用业务主键的主要原因是,增加逻辑主键就是增加了一个业务无关的字段,而用户通常都是对于业务相关的字段进行查找(比如员工的工号,书本的 ISBN No. ),这样我们除了为逻辑主键加索引,还必须为这些业务字段加索引,这样数据库的性能就会下降,而且也增加了存储空间的开销。所以对于业务上确实不常改变的基础数据而言,使用业务主键不失是一个比较好的选择。另一方面,对于基础数据而言,一般的增、删、改都比较少,所以这部分的开销也不会太多,而如果这时候对于业务逻辑的改变有担忧的话,也是可以考虑使用逻辑主键的,这就需要具体问题具体分析了。
MySQL 中主键的几种表设计组合的实际应用效果 - 知乎
数据库之逻辑主键和业务主键 - 掘金