关于sql中逻辑主键和业务主键的理解

1背景 :在使用hibernate的过程中,遇到了联合主键的困境。

由于原有项目是原生的java语言写的,而现在需要使用hibernate重写。原有的数据库表的设计中,很多表中都是用了联合主键 ,因为这样的设计符合业务上的概念,而且原生的jdbc数据库访问也不存在使用联合主键的困难。

但是,现在一切变了,一方面,我们享受者hibernate的面向对象的变量;一方面,却要忧虑不能使用hibernate的原有功能时的无所是从。

我在网上搜集了一些讨论,结论是除非你真的精通hibernate,否则不要使用hibernate的联合主键功能,因为这会给你带来很多意外的烦恼。幸好,以前的项目也是我写的,因此,

我决定把数据库改了,原来正在运行基于原生java语言开发的项目也响应更改。


2  因此接下来要讨论如何改的问题,如何能够尽量不影响原来项目的运行,而又能以最小的工作量解决当前项目的困境呢,这就牵涉到了本文要讨论的概念了,

  逻辑主键和业务主键—— 我的理解如下

逻辑主键---通俗的说,是给机器的,它的目的是让机器能够正确标识记录

业务主键----是给人(程序员)来理解的,它的目的是让我们更好的理解项目的设计思想,以便于开发。

举个例子:我原来的项目中 有2个表 

sh_device 主键  dev_GUID

sh_maintain  主键  ma_dev_GUID, ma_order

在sh_maintain  中,使用了联合主键,其中ma_dev_GUID关联了sh_device的dev_

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值