业务主键和代理主键的比较

本文探讨了业务主键和代理主键在数据库设计中的各自优势。业务主键具有更好的检索性能、可读性以及数据迁移便利性,但可能导致数据冗余。代理主键适应业务变化的能力更强,且在并发环境下更容易生成唯一ID,但在连接和更新性能上可能较低。选择哪种主键取决于系统需求、应用环境和维护成本等因素。
摘要由CSDN通过智能技术生成
这是个老话题,人们在做数据库设计时常常按照个人偏好或一些技术文档上的简单推荐来选择它们二者,但是世上没有放之四海而皆准的东西,所以它们两者一定会相对更适合应用于不同的环境。下面对两者各种的优势加以说明。

优势和不足
下文中提到的“业务编号”是可以唯一确定一条记录的有意义的内容,也就是业务主键。

业务主键优势


业务主键
代理主键

1
具有更好的检索性能。同时基于主键检索更加方便。


因为使用业务主键来查询关联表时,可以减少连接主表的几率,减小I/O量。
连接开销只能通过增加冗余来解决,即在子表中保存主表的“业务编号”。但是这样做的话,使用代理主键的意义就失去了很多。因为,它会引起使用冗余数据后存在的所有问题,可是又没有解决代理主键的许多不足。

2
更好可读和便于理解。



3
合并相同业务实体更加容易(不同实体的主键编码不同)。


举例:两个分公司的订单,每月汇入总公司的数据库表。如果前期已经分公司订单编号区分开了,则合并数据就可以直接COPY。
如果代理主键是numeric类型的,那么前期必须定义各个分公司的订单表及子表使用不同的范围取值的代理主键。这虽然无需修改应用,但是增加了系统实施和后期维护的工作。如果代理主键是UUID或GUID这样的对象,那么则不需要。


业务主键的这一优势只限前期对不同分公司的业务主键的编码做了区分,如果没有,那么做数据合并时将更加麻烦。相反,代理主键此时反倒更具优势,因为数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值