数据表结构设计时,使用具体业务的字段作为主键好还是使用一个流水号好?

WxmJun 2005-08-17 01:22:16
数据表结构设计时,使用具体业务的字段作为主键好还是使用一个流水号好?
好:是指定扩展性,维护性,通用性,性能等方面考虑.

现在公司旧系统中是使用了流水作为主键的,很多的关联表都是作流水关联.SELEC得到的结果是一串串的流水号看得晕呼晕呼的.要想看到一些有意义的数据必须查询几个表.
但如果使用了具体业务的字段,通用性就不是很好了,有时对一些公共模块处理起来比较麻烦.

我现在想使用业务字段为主键,流水号(用数据库的自增字段)为辅这种形式设计不知行得通否?
...全文
343 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxdn_yang 2005-09-28
  • 打赏
  • 举报
回复
使用业务字段为主键,流水号(用数据库的自增字段)为辅这种形式.我觉得蛮好啊,我也这么用的....
bean5566 2005-09-28
  • 打赏
  • 举报
回复
流水
...
TinyJimmy 2005-09-28
  • 打赏
  • 举报
回复
没必要改拉. 数据库 不是用来好看的, 要注重效率. 如果确实有必要, 可以建立唯一索引, 确保业务数据不重复.

查询的时候如果难看可以选择或关联你想要的字段呀, select * ...不是一个好的想法, 大量你不想要的数据要提取出来, 效率也不高的
saiche05 2005-09-28
  • 打赏
  • 举报
回复
用业务字段,如果相关联的再使用流水号。
例如主表和明细表,则明细表用业务字段主键和流水号。
majy 2005-09-28
  • 打赏
  • 举报
回复
那要看和业务想关的字段是不是要被修改了,如果老是要修改,就用上流水号,如果不变,用流水就是多余的了

为了查询等应用,你的业务字段一般总是要被频繁使用的,所以一般总要建立索引的,而加了流水,那就等于多加了一个索引,这样会降低效率的
lnzyb 2005-09-28
  • 打赏
  • 举报
回复
我是指代码移植的问题,当一断代码完成相同功能可能会因为主健的不同移植该代码会做除了表操作时字段修改外还要做,关联和页面参数跳转之类的修改,造成移植代码中的不灵活性和重复劳动。
洪泉 2005-08-18
  • 打赏
  • 举报
回复
这样比较麻烦啊!
WxmJun 2005-08-18
  • 打赏
  • 举报
回复
to lnzyb(缘分的天空) :

=====================
现在公司旧系统中是使用了流水作为主键的,很多的关联表都是作流水关联.SELEC得到的结果是一串串的流水号看得晕呼晕呼的.要想看到一些有意义的数据必须查询几个表.
=====================

使用流水的话,上面的问题没有解决,并且在性能上也有损失.
对于移植性来说,既然已经有一套关联关系,移植数据时也必须整套一起移植吧,使用了流水或具体业务主键区别不大吧.

我觉得使用流水号的唯一好处就是对一些公共模块处理起来比较方便而已.
lnzyb 2005-08-18
  • 打赏
  • 举报
回复
你的想法是错误的,对于数据表设计来说主健是必要的,但如果用业务数据做主健流水号做辅助就是完全没有必要,会造成不必要的麻烦,其实原来的用普通流水做主健是个非常好的方法,这样移植性强而且表间关联也方便,在设计上不需要考虑过多问题,你可以把业务数据做索引或唯一约束来达到你的其他目的。
WxmJun 2005-08-18
  • 打赏
  • 举报
回复
没有理我?!
shoulders 2005-08-18
  • 打赏
  • 举报
回复
干脆就用业务字段为主键,其他的不用。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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