楼主: vacuum

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

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


目前 我们 遇到这样的问题 是这样处理的  xx||to_char(seq.nextval,'0000000000000000000')
比如 北京的数据就是 ‘01’||...

我们一般都是使用sequence 做主键,业务上需要保证唯一的加上uk

业务数据做主建的问题 我觉得下面的问题
1.如果数据需要修改会带来很多 麻烦 ,比如那身份证做人的 主键,但是身份证号码输入错了。
2.如果系统结构复杂的时候,引用层次比较多,可能出现主键列很多的情况,使得性能受到影响
3.如果业务上说这个列不是唯一的了 ,那就麻烦了

不过业务主键也有好处 ,比如查询的时候因为业务数据放到了引用表中,可能可以减少关联,
这一点,我们在使用 逻辑主键的时候有的时候是通过冗余数据解决的

使用道具 举报

回复
论坛徽章:
15
NBA季后赛纪念徽章
日期:2008-06-20 11:45:192011新春纪念徽章
日期:2011-01-04 10:24:022010新春纪念徽章
日期:2010-01-04 08:33:08祖国60周年纪念徽章
日期:2009-10-09 08:28:00生肖徽章2007版:羊
日期:2009-09-10 11:27:422009日食纪念
日期:2009-07-22 09:30:00生肖徽章2007版:鸡
日期:2009-05-11 09:59:57生肖徽章2007版:牛
日期:2009-04-01 11:46:35生肖徽章2007版:猪
日期:2009-03-10 21:37:00生肖徽章2007版:兔
日期:2009-01-15 12:58:59
32#
发表于 2008-9-28 16:42 | 只看该作者
个人倾向于用业务主键:
1、逻辑主键看起来解决了数据的唯一性问题,但是恰恰对实际数据的不唯一性提供了后门,经常要加一个业务的唯一索引,画蛇添足。
2、对数据的迁移带来不必要的麻烦,有时候为了这个主键而不得不在建sequence的时候进行人为的分段,而在进行测试数据生成或者是数据迁移的时候,更是一个大麻烦。
3、只在对数据进行编辑和删除的时候才起作用,对于应用最多的查询来说根本就没有一点作用,而如果只是为了用一个字段来定位记录的话,完全可以用rowid代替
4、对数据空间的占用,一个用处很少的字段,如果数据量大的话,占用的空间,也不会少吧
同意前面
开发人员喜欢用逻辑主键,管理人员喜欢用业务主键的说法
层面不同,关注点也不一样

[ 本帖最后由 angus_shi 于 2008-9-28 16:43 编辑 ]

使用道具 举报

回复
论坛徽章:
0
33#
发表于 2010-1-23 01:40 | 只看该作者
于甲方,数据就是命根子,使用业务主键,数据的完整性,关联性清楚明了,上层业务系统怎么改数据都不会乱,但可能工作量大些(相对)。

对于乙方,总是希望工作量越小越好,所以一般选择逻辑主键,也不管你企业的数据存储空间如何,不管你数据今后好不好升级,不管有没有垃圾数据,只要保证在我的维护期内能搞定即可。

但请注意,在数据大批量修改时,使用业务主键 工作量会大些,但约束使你不会出错;使用逻辑主键,貌似工作量小,但必须很小心,万一出错了,可能数据就会大面积错乱,也许无法弥补。

我的观点:http://www.cnblogs.com/petitlen/articles/1654534.html

使用道具 举报

回复
论坛徽章:
3
会员2007贡献徽章
日期:2007-09-26 18:42:10ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:442010数据库技术大会纪念徽章
日期:2010-05-13 09:34:23
34#
发表于 2010-1-23 07:03 | 只看该作者
逻辑主键对性能没有好处
在高并发的OLTP上,如果同时三实施业务主键唯一约束和逻辑主键的主键约束,DML的成本增加了,并发性能降低了
在OLAP或DSS上,数据如果是按逻辑主键的顺序加载的,逻辑主键的索引集群因子最小,业务主键索引的集群因子偏高,但业务上的查询更多是对业务主键索引的索引范围扫描或全索引扫描,性能就降低了

使用道具 举报

回复
论坛徽章:
86
2015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11优秀写手
日期:2013-12-18 09:29:11日产
日期:2013-10-17 08:44:39马自达
日期:2013-08-26 16:28:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-23 16:55:51马上有房
日期:2014-02-19 11:55:14
35#
发表于 2010-1-23 09:06 | 只看该作者
从数据库角度,业务主键好。
从开发角度,逻辑主键简单。

使用道具 举报

回复
论坛徽章:
10
授权会员
日期:2008-03-13 10:32:44生肖徽章2007版:鸡
日期:2008-04-03 18:55:51数据库板块每日发贴之星
日期:2008-04-21 01:01:58奥运会纪念徽章:拳击
日期:2008-06-14 10:29:372014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11
36#
发表于 2010-1-23 09:47 | 只看该作者
我偏向于“逻辑主键”,业务始终可能改变,用一个与业务无关的标识应该可以避免业务改变的连带问题

使用道具 举报

回复
论坛徽章:
1
2010新春纪念徽章
日期:2010-03-01 11:20:05
37#
发表于 2010-1-27 19:07 | 只看该作者
还是操作逻辑主键来的安全。。。

使用道具 举报

回复
论坛徽章:
1
2010新春纪念徽章
日期:2010-03-01 11:20:05
38#
发表于 2010-1-27 19:08 | 只看该作者
可以根据逻辑主键关联业务主键,一般情况下是一对一的关联!!!!

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
9
生肖徽章2007版:牛
日期:2009-03-10 21:26:492010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:葡萄牙
日期:2010-02-22 14:35:242010新春纪念徽章
日期:2010-03-01 11:19:092010广州亚运会纪念徽章:射击
日期:2010-09-08 23:42:12ITPUB9周年纪念徽章
日期:2010-10-08 09:31:212010广州亚运会纪念徽章:拳击
日期:2010-10-30 00:46:582011新春纪念徽章
日期:2011-02-18 11:43:322011新春纪念徽章
日期:2011-03-01 08:49:39
39#
发表于 2010-1-27 21:40 | 只看该作者
难说,都会使用。

使用道具 举报

回复
论坛徽章:
57
秀才
日期:2017-08-18 11:06:452012新春纪念徽章
日期:2012-01-04 11:50:44ITPUB十周年纪念徽章
日期:2011-11-01 16:21:152011新春纪念徽章
日期:2011-02-18 11:43:33ITPUB9周年纪念徽章
日期:2010-10-08 09:28:532010新春纪念徽章
日期:2010-03-01 11:06:132010年世界杯参赛球队:朝鲜
日期:2010-02-22 16:02:522010年世界杯参赛球队:荷兰
日期:2010-02-22 12:53:212010年世界杯参赛球队:瑞士
日期:2010-01-21 17:04:522010年世界杯参赛球队:法国
日期:2010-01-21 12:44:59
40#
发表于 2010-2-18 16:48 | 只看该作者
沒有絕對的業務主鍵和邏輯主鍵之分。邏輯主鍵的ID流水號,隨著系統的深入使用,會逐漸成為業務的一部分。

使用道具 举报

回复

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

本版积分规则 发表回复

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