作者 内容
 yirun  请教几个关于数据库设计和实现的问题:多谢·

例如一张客户订单表,有(订单号,客户编号,审核人,制单人,经手人,备注......)
第一、订单号是00000001,00000002等,设置成numeric(8)就会丢失左边的0,设置成char(8),可订单号是主键呀,速度肯定受影响!怎么办?
第二、订单表中的(客户编号,审核人,制单人,经手人)都和别的表有主外键关联,如果要得到一张订单表的清单需要太多的联合查询,你们怎么解决!?
第三、是不是每个表不管有无必要都要加个备注字段?
第四、一般的表都有类型,而类型表一般只有(编号,字段),差不多,是把各个类型表合在一起呢,还是每个表单独设置类型表?
请赐教,谢谢!
 02/01/17 09:32 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 yirun  一个表引用太多的表或者一个表被过多的表引用

应该不好吧,是否有什么参考的评价方法或者替代方案?
 02/01/17 09:36 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 暮寒   我先问你一个问题

我先问你一个问题 为什么将字段类型设置成char(8)速度就受到影响
 02/01/17 09:43 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 johnbean   回复: 请教几个关于数据库设计和实现的问题:多谢·

1.对于数据库而言, char和integer的检索应该速度不会相差很大,要不,你可以设置Identity自动增1的列作为PrimaryKey也行的
2. 多表查询的话,其实一个SQL语句就可以搞定了,我们作的查询曾关联过大概有十个表的吧,最主要是做好关联就行了
3. 看实际的情况,该要就要没必要的话,你放这么一个字段在那里干什么?
4. 我觉得放在同一个表里好一些
 02/01/17 09:54 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 xu_zh_h   回复: 请教几个关于数据库设计和实现的问题:多谢·

把定单号作CHAR型,另设主健(自动生成啊);用VIEW;不是
 02/01/17 09:55 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 lw011  回复: 请教几个关于数据库设计和实现的问题:多谢·

订单号设置成numeric(8),需要时补左边的0
可以直接使用关联查询;
这只是一个习惯问题;
把各个类型表合在一起;
 02/01/17 10:19 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 yirun  为了统一为8位

如00000001,好像varchar(8)更好,不过速度还是会有影响!
 02/01/17 10:39 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 yirun  设置Identity自动增1的列,int 太小

如果经常更新数据的表这个自动增量的列设置为什么比较好?numeric(8)好吗?
 02/01/17 10:45 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 暮寒  我不是问这个 我是问为什么char要比integer慢

 02/01/17 10:53 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 johnbean   其实...

其实numeric是一种极差的数据定义方式, 你可以用BigInt的呀, 还有, 其实用char类型作为PrimaryKey, 在速度上是不会有什么问题的, 因为是大型数据库. 再说了, 不可能你每个Table都用数值类型作为PrimaryKey吧, 不现实也没这个必要
 02/01/17 10:54 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 joy_wind  大话 数据库

1,用char(8)会影响速度吗?不会吗?会吗?不会吗?(影响,但可以忽略不记)

2,“only view, only view...” (用视图呀!)

3,I 服了 U ! ( 没必要当然不用加了!)

4,look! “把所有的类型都放到一个表里维护起来应该方便一点吧,当然了,需要给它分组的哟!”
 02/01/17 10:57 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 yirun  还真说不上来

感觉字符串比较要一个一个的比较,而数字不是!
你说说看?
 02/01/17 11:00 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 暮寒   我赞同

我刚才问了师兄 他也是这么说的 他说字符串要一个字符一个字符的比较 而数字是在存储器中直接比较 所以速度要快的多(尤其是对长度交长的)
 02/01/17 11:04 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 暮寒   回复: 大话 数据库

你说用view 给个理由先
 02/01/17 11:12 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 joy_wind  回复: 大话 数据库

视图快呀,DBMS可以帮你优化呀,客户端程序简单呀...

当然,你可以重新设计数据库,把所有的数据都放到一个表里,什么关联都不需要了!哈哈,那是另一个极端了。
 02/01/17 11:18 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 xchyj   在Oracle中,字符的搜索速度会比整数慢。记得有一份文档说Rowid速度第一,Int第二。但大多数情况下没有必要考虑速度问题。

 02/01/17 11:51 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 fyrb   回复: 请教几个关于数据库设计和实现的问题:多谢·

主键不要有实际意义的字段
 02/01/17 13:55 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 Charity_Zhou  回复: 还真说不上来

数字只要比较一次就行了,字符型则要全部比较
 02/01/17 14:46 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 socoolliqiang   回复: 大话 数据库

同意你的观点
 02/01/18 11:41 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 shaojl  回复: 一个表引用太多的表或者一个表被过多的表引用

这是按范式进行规范的必然结果,没什么不好的,可能在自己测试时不太方便而已,但对程序的健壮还是有好处的。一点愚见
 02/01/18 12:00 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首