楼主: vacuum

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

[复制链接]
论坛徽章:
0
11#
发表于 2003-2-27 16:06 | 只看该作者
我倾向于使用逻辑主键。业务主键在
1。存在主从关系时候,更新时不方便。
2。业务主键是复合型时,使用不方便。

使用道具 举报

回复
论坛徽章:
0
12#
 楼主| 发表于 2003-2-27 16:19 | 只看该作者
再来一段:
Identify字段不要作为表的主键与其它表关联,这将会影响到该表的数据迁移。

使用道具 举报

回复
论坛徽章:
0
13#
 楼主| 发表于 2003-2-27 16:20 | 只看该作者
应该是SEQUENCE字段.

使用道具 举报

回复
论坛徽章:
0
14#
 楼主| 发表于 2003-2-27 17:13 | 只看该作者
关于业务主键 Vs. 逻辑主键 该用谁 的讨论,整理一下.
大家不认为逻辑主键有什么缺点吗?都用它吗? 以下是我的引述:
--
1.They're not standard SQL. Most products have it but there's no consistent implementation.
2.They can't be updated. This violates the relational data model (not fatal, but not good either). Duplicates can be accidentally inserted (fatal).
3.They only create numeric values. GUID/NewID() are also numeric only, and are hard to read.
4.Numeric values are not meaningful in many tables, and adding them complicates relationships between other tables.
--
Problems such as supporting replication, merging, and a providing a limited number of unique values for a heavy transactional systems
--
SEQUENCE字段不要作为表的主键与其它表关联,这将会影响到该表的数据迁移。
--
欢迎讨论.

使用道具 举报

回复
论坛徽章:
0
15#
发表于 2003-2-27 17:52 | 只看该作者

关注

最初由 dingrong 发布
[B]我倾向于使用逻辑主键。业务主键在
1。存在主从关系时候,更新时不方便。
2。业务主键是复合型时,使用不方便。 [/B]

我也是这样想的,我也提过类似的问题,在我的设计中也是使用逻辑主键,但是曾和别人产生过激烈冲突。著名的溺水三千也是反对者,他认为小的数据库设计可以,但大的不行,我也不知道为什么。我的感觉是侧重设计的人往往用业务主键,侧重开发的人往往用逻辑主键。(在不违反业务的情况下)。另外,逻辑主键在业务查询时完全没用,而它却有索引,这种情况在大表上尤其不适合。

使用道具 举报

回复
论坛徽章:
0
16#
 楼主| 发表于 2003-2-28 12:46 | 只看该作者
up

使用道具 举报

回复
论坛徽章:
5
开发板块每日发贴之星
日期:2005-09-20 01:02:25开发板块每日发贴之星
日期:2005-09-25 01:02:23会员2006贡献徽章
日期:2006-04-17 13:46:34奥运会纪念徽章:拳击
日期:2008-08-15 14:59:34马上有车
日期:2014-03-06 20:08:58
17#
发表于 2005-4-13 16:11 | 只看该作者
对于这个问题应该没有明确的答案吧,这个和应用的场合和使用的人有很大的关系吧,在一些实时性的数据量大的场合还是用业务主键吧,要不然数据库表还要额外的增加一个字段,还要增加索引,这个无疑就增加了数据库的负担,影响了系统的性能。对于开发人员来讲,有时为了编程上的方便增加一个逻辑主键,这个如果出现在数据量不是很大的时候,应该没有什么不可以!

使用道具 举报

回复
论坛徽章:
168
马上加薪
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-01-04 11:49:54蜘蛛蛋
日期:2011-12-05 16:08:56ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41设计板块每日发贴之星
日期:2011-07-22 01:01:02ITPUB官方微博粉丝徽章
日期:2011-06-30 12:30:16管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:33
18#
发表于 2005-4-13 16:57 | 只看该作者
关键问题在于业务需求是会变化的,今天的业务主键明天很可能就不是了.
而对于使用torque/hibernate等实现持久层的java应用是要求表必须有主键的.
这种情况下使用逻辑主键会方便很多.

使用道具 举报

回复
论坛徽章:
314
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
19#
发表于 2005-4-13 17:20 | 只看该作者
我主张使用逻辑主键!

业务主键可以用做唯一键+非空来保证业务需求。
但在系统使用是,最好使用逻辑主键来建立关系。

因为:

主键必须保持稳定——不能更改主键的域。
主键必须简洁,不要包含过分的属性。
主键的值不便改变。

从这些要求看,逻辑主键更适合应用。

使用道具 举报

回复
论坛徽章:
0
20#
发表于 2006-6-13 15:52 | 只看该作者
最初由 ZALBB 发布
[B]我主张使用逻辑主键!

业务主键可以用做唯一键+非空来保证业务需求。
但在系统使用是,最好使用逻辑主键来建立关系。

因为:

主键必须保持稳定——不能更改主键的域。
主键必须简洁,不要包含过分的属性。
主键的值不便改变。

从这些要求看,逻辑主键更适合应用。 [/B]


我们一直用逻辑主键
如果是业务主键,在主从关联上不好做
而且,业务是可以被改变的,这样影响很大
在大的数据库中,逻辑主键的性能也很好

使用道具 举报

回复

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

本版积分规则 发表回复

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