逻辑主键真的比业务主键好用?

网上搜索,很多都是说逻辑主键各种好的。但我在使用过程种确很糟心。

遇到的问题:

  • entity 重复插入的问题。如果使用业务主键,通过主键就能识别是同一个entity,而使用逻辑主键确没办法识别,在更新的时候变得艰难。如果没有逻辑主键的辅助在insert的时候存在插入属性相同但主键不同的entity的可能性。
  • 很多业务都是基于业务主键,而作为外键的确实逻辑主键。这直接导致了业务主键在其他模型根本就没办法使用,必须每次都要通多业务主键去查询到逻辑主键,在通过逻辑主键作为外键去查询。如果是跨项目,那就更难受了,可能绕好几次。

这些问题并非没有解决办法,但有时候确实感觉到没有必要。至于推荐逻辑主键中最强有利的理由,业务主键会遭遇变化,我是真的一次也没遇到过。

阅读 3.6k
2 个回答

我在很多个问题下的都会回答一句话:

软件工程没有银弹

这是 IBM 大型机之父布鲁克斯的一句名言。这个人名你可能比较陌生,但他写过一本书你应该听过(没读过的我建议读读,很薄,但非常经典),叫《人月神话》。

所以这个问题并不存在完美解,你的感觉是对的,某些场景下业务主键就确实更简单、也更好用。

学习了,第一次知道这个名词,但是感觉真没什么用。事实上我们需要的是简单的找到唯一的那条数据,当然怎么省事怎么做。
如果和业务关联的话,那就更容易了。由开发者进行有限定义的数据使用业务主键,其它使用逻辑主键。
而且,主键又不是唯一解...谁的用户表不都是id作为主键,username作为唯一键,其实也就是逻辑主键和业务主键并存的方式实现的吗。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题