急急!!!数据库设计的人员个个都头痛的问题!用ID关联还是用字符串好?

MiracleAizw 2005-11-09 09:49:05

一直困惑多年,我在建立主子表的关系时经常碰到这样的问题,有的时候难下定夺。

如订单表有OrderID整型主键,OrderNo唯一键。生产单有ProductionID,然后应该用OrderID与订单关联好还是用OrderNo好。 如果用OrderID,每次查询都要关联查OrderNo。如果用OrderNo,执行效率会低。

各位都用什么办法呢?
...全文
524 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dark13 2006-05-05
  • 打赏
  • 举报
回复
从范式来说ID是没有必要的,当然,范式不等于实际使用,实际使用来说要不要ID都可以,不要使用方便点,当然修改的时候有ID稍微好点。不过对于订单之类的营销库存系统来说,系统通常都不会很大,除非是大型物流系统。
BlueDog 2006-05-05
  • 打赏
  • 举报
回复
如果是大型系统最好同时两者都存在
用整型数据做主键,称为内码
用字符串型的辅助,为外码(用户可以使用它来查询)

这样做的好处是订单号规则可以改变,而且查询效率不差
Dark13 2006-05-03
  • 打赏
  • 举报
回复
通常都用ID关联比较好,ID的唯一性好,而且往往是索引

不过如果确实出现ID的地方都要出现NO的话,你不如把两个列都加到那个表里去,这样就一目了然了

不过我奇怪,你的NO既然已经是唯一键了,为什么还要弄个ID去做主键,不是多此一举么
wwh999 2006-05-03
  • 打赏
  • 举报
回复
这个问题提的不错,顶一下!
可惜楼主的表达好像有点问题:
究竟OrderNO是自动编号,还是OrderID是?

应该讨论的是,在一张表是存在自动编号和能唯一标识行的主键列时,使用哪一个作为外键。?
suntt 2006-05-03
  • 打赏
  • 举报
回复
主键最好是使用无现实意义的
hyrongg 2006-05-03
  • 打赏
  • 举报
回复
我也同样好奇,orderNo唯一健,设为主健,去掉orderID不是更好吗?
danisluo 2005-11-10
  • 打赏
  • 举报
回复
用Orderid关联
wangdehao 2005-11-10
  • 打赏
  • 举报
回复
我感觉用OrderNo做主键,通过OrderNo关联也没什么不妥,查询速度应该不次于原来那种方式,等高手.......
火电 2005-11-10
  • 打赏
  • 举报
回复
id是主键,即为索引,查询方便

记录条数多时有优势


如果认为sql执行效率低可以用存储过程,编译后执行,就ok
fishmans 2005-11-09
  • 打赏
  • 举报
回复
当然是用唯一键关联好啦
存在这样的不如分主子表
iwl 2005-11-09
  • 打赏
  • 举报
回复
其实应该是个有利弊的

1、如果用OrderID连结,那么即使改了OrderNo也没有关系 照样可以连结上找到你需要的记录

但是如果你把改单删除了,重新做一个单,尽管OrderNo是一样的,但是还是连接不上。

2、如果用OrderNo连结,情况巧好相反。

3、具体怎么用,就看你的要求是什么 ,用OrderNo,执行效率会也不一定会低,你可以在OrderNo上面建一个聚集的索引,执行起来就会好很多。

希望对你有帮助
wgsasd311 2005-11-09
  • 打赏
  • 举报
回复
用主键关联
lisiyong 2005-11-09
  • 打赏
  • 举报
回复
OrderID

好点
MiracleAizw 2005-11-09
  • 打赏
  • 举报
回复
请讲讲你的理由
该问题经常碰到,用ID,主表关联太多的时候,查询语句麻烦。每次写一串关联,查出NO与Name.
但是,如果用NO,就不用再去关联了。写SQL语句简单。
vivianfdlpw 2005-11-09
  • 打赏
  • 举报
回复
OrderID
点点星灯 2005-11-09
  • 打赏
  • 举报
回复
我选择OrderID,不用OrderNo

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧