楼主: vacuum

[精华] 业务主键 Vs. 逻辑主键,到底用哪一个?

[复制链接]
论坛徽章:
5
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34会员2007贡献徽章
日期:2007-09-26 18:42:10BLOG每日发帖之星
日期:2009-11-18 01:01:072010新春纪念徽章
日期:2010-03-01 11:19:07
21#
发表于 2006-6-13 16:11 | 只看该作者
最初由 dingrong 发布
[B]我倾向于使用逻辑主键。业务主键在
1。存在主从关系时候,更新时不方便。
2。业务主键是复合型时,使用不方便。 [/B]


不敢苟同。个人认为主键和外键就是用来表示实体之间的关系的,虽然更新是需要考虑顺序,如先父表,然后子表等,但实际的业务就是这样,如果用一个毫无意义的字段来作为主键,更新方便了,程序处理方便了,但数据之间的完整性如何保证?垃圾数据如何避免?数据是企业的命根子,只要企业存在,数据就有用,可是程序呢,今天用PB,明天就变成JAVA了

使用道具 举报

回复
论坛徽章:
0
22#
发表于 2006-6-13 16:17 | 只看该作者
用业务主键还是逻辑主键我主张顺其自然为好,如果实体本身
有唯一的业务主键当然使用,没有只能用逻辑主键,

使用道具 举报

回复
论坛徽章:
20
授权会员
日期:2005-11-02 13:35:57ITPUB8周年纪念徽章
日期:2009-09-27 10:21:22祖国60周年纪念徽章
日期:2009-10-09 08:28:00生肖徽章2007版:兔
日期:2009-11-13 10:54:06生肖徽章2007版:蛇
日期:2009-11-28 18:44:592010新春纪念徽章
日期:2010-01-04 08:33:082010新春纪念徽章
日期:2010-03-01 11:06:292010年世界杯参赛球队:瑞士
日期:2010-04-03 20:50:32ITPUB9周年纪念徽章
日期:2010-10-08 09:31:212009日食纪念
日期:2009-07-22 09:30:00
23#
发表于 2006-6-13 16:37 | 只看该作者
关心这个问题,不如这样吧,大家光说不练不行,大家来举例吧。举例说明业务主键和逻辑主键在实际业务中的使用。期待精彩例子

使用道具 举报

回复
论坛徽章:
0
24#
发表于 2007-7-7 20:19 | 只看该作者
最初由 DBAORACLE 发布
[B]

不敢苟同。个人认为主键和外键就是用来表示实体之间的关系的,虽然更新是需要考虑顺序,如先父表,然后子表等,但实际的业务就是这样,如果用一个毫无意义的字段来作为主键,更新方便了,程序处理方便了,但数据之间的完整性如何保证?垃圾数据如何避免?数据是企业的命根子,只要企业存在,数据就有用,可是程序呢,今天用PB,明天就变成JAVA了 [/B]


我觉得原作者的意思是:
在实际应用环境中,用户也许会出错,录入错误的单号、产品号等,等发现时这些业务主键已经被多处地方使用作为外键,这时需要修改这些错误信息就会增加工作量。

使用道具 举报

回复
论坛徽章:
50
2014年世界杯参赛球队: 荷兰
日期:2014-07-11 07:56:59蛋疼蛋
日期:2012-03-06 07:22:542012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-01-04 11:53:29蛋疼蛋
日期:2011-11-11 15:47:00ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26
25#
发表于 2007-7-7 20:29 | 只看该作者
你们说的逻辑主键就是指序列吗?
那业务主健呢?是指用程序生成的,用编程语言写的编码吗,带有一定含义的编码

是这个意思吗?

使用道具 举报

回复
论坛徽章:
4758
季节之章:冬
日期:2019-07-13 22:29:26季节之章:春
日期:2019-07-13 22:29:26季节之章:夏
日期:2019-07-13 22:29:26季节之章:秋
日期:2019-07-13 22:29:26嫦娥
日期:2019-08-03 07:05:29玉石琵琶
日期:2019-08-03 08:17:02铁扇公主
日期:2019-08-03 21:12:36九尾狐狸
日期:2019-08-05 21:05:25玉石琵琶
日期:2019-08-06 06:36:05玉兔
日期:2019-08-06 16:05:50
26#
发表于 2007-7-7 21:22 | 只看该作者
业务主键指的是和具体业务内容相关的唯一值。个人倾向逻辑主键。

使用道具 举报

回复
论坛徽章:
0
27#
发表于 2008-9-28 15:33 | 只看该作者
我认为这个问题其实并没有绝对的答案,如果是单一部署的我认为逻辑主键要好,但是分布式部署呢,看看以下的例子:
假如有这样一个系统,杭州、宁波、温州和浙江省等各部署一个一套库,各自一个库,互相不联网,其中有一个表的数据在各自的系统中作增加,在年底的时候都要导到省里的系统,这时候如果采用逻辑主键的话,杭州就有一条Id为100的记录,宁波或其他地方同样会有一条Id为100的记录,两条记录根本就没有关系,导入到省里以后两条记录就冲突了,id100不知道代表那条记录,这时候就要用业务主键在保证全省唯一,大家认为是逻辑还是业务好呢

使用道具 举报

回复
论坛徽章:
10
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44ITPUB十周年纪念徽章
日期:2011-11-01 16:21:152011新春纪念徽章
日期:2011-05-06 16:49:002011新春纪念徽章
日期:2011-02-18 11:43:33ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512010新春纪念徽章
日期:2010-03-01 11:07:22生肖徽章2007版:鸡
日期:2009-09-28 12:51:472009新春纪念徽章
日期:2009-01-04 14:52:28生肖徽章2007版:鼠
日期:2008-01-02 17:35:53劳斯莱斯
日期:2013-12-16 10:42:54
28#
发表于 2008-9-28 15:58 | 只看该作者
为什么这个帖子会被加为精华贴呢?

使用道具 举报

回复
论坛徽章:
4
授权会员
日期:2005-12-10 15:04:50ITPUB元老
日期:2008-09-25 12:43:47奥运会纪念徽章:篮球
日期:2008-10-24 13:29:38ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41
29#
发表于 2008-9-28 16:07 | 只看该作者
原帖由 gozheng 于 2003-2-26 20:56 发表
当然逻辑主键科学呀! 业务会变的!

使用道具 举报

回复
论坛徽章:
66
现任管理团队成员
日期:2011-05-07 01:45:08版主9段
日期:2013-04-21 02:21:02ITPUB年度最佳版主
日期:2014-02-19 10:05:27ITPUB年度最佳版主
日期:2013-01-30 17:30:25ITPUB年度最佳技术原创精华奖
日期:2012-03-13 17:12:05优秀写手
日期:2013-12-18 09:29:15元宝章
日期:2015-02-10 19:57:54金牌徽章
日期:2015-02-10 19:59:42银牌徽章
日期:2015-02-10 19:59:42铜牌徽章
日期:2015-02-10 19:59:41
30#
发表于 2008-9-28 16:17 | 只看该作者
你说得逻辑主键在数据仓库里面叫替代键

个人觉得各有各的优势

按需求来使用

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表