【数据库】为什么要添加一个与业务无关的主键?

关注获取更多:
在这里插入图片描述

你是否想过,为什么mysql要设置一个自增的主键,或者使用uuid生成一个和业务无关的主键id,在数据库设计中,主键是用来唯一标识每一行数据的关键。通常情况下,我们会选择与业务相关的字段作为主键,以确保数据的唯一性。然而,在某些情况下,使用与业务无关的主键可能更为合适,并且会带来一些额外的好处。

使用非业主字段做主键的好处:

  1. 解决业务变化和数据唯一性问题:

假设我们有一个表,其主键是由多个业务字段联合组成的,比如学校ID、班级ID和学生ID。然而,随着时间的推移,业务需求可能发生变化。例如,我们可能发现有的学生会留级,而留级后的学生可能会重复出现在数据中,通过上面三个字段不能唯一确认一条数据了,所以就要加一个年级id。这时候,我们发现如果有一个非业务字段作为主键,不会存在这个问题。

2,方便数据管理和维护,减少线上风险操作

有人说,我就有强迫症,就喜欢表里面的字段,都是有业务意义的,遇到上面问题,我再把年级id也加到里面,形成新的联合主键(学校id,班级id,学生id,年级id),这时候通常需要先删除原来的主键,然后再添加新的联合主键。这个过程不仅繁琐,而且可能会导致数据不一致或错误,并且实际的生产环境,删除主键再新添加主键会阻塞读写操作,导致系统崩溃,这是不可接受的。而通过添加一个与业务无关的主键,我们可以避免这种情况,简化数据管理和维护的过程。

3,提高查询效率:

除了确保数据的唯一性外,添加一个与业务无关的主键还可以带来查询性能的提升。我们可以通过在该主键上建立索引,来加速数据的检索和查询操作。特别是对于大型数据集和复杂查询场景,索引的使用可以显著提高查询效率。

4,保证历史数据的完整性:

当我们需要对已有的历史数据进行更新或调整时,可能会遇到一些挑战。例如,添加新的主键字段时,需要确保历史数据不会出现重复或缺失的情况。通过使用与业务无关的主键,我们可以更容易地处理这些问题,保证历史数据的完整性和一致性。
在这里插入图片描述

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值