日期:2014-05-17  浏览次数:20658 次

各位给个意见,哪种方案更靠谱?
做的是进销存管理软件,涉及货物进出,每张单据标准结构都是:

主单据+明细单据(保存商品);

现在问题是,是否需要新增一张 所有货物进出的明细表,这样便于后续查询统计,不需要用UNION 进行连接查询。

1.增加这张表的话,每次出库时都要新增记录;容易出错;但后续查询统计要快些;

2.不增加这张表的话,采取动态连接查询统计,出错概率低些,但数据量大时速度慢。

------解决方案--------------------
我觉得可以一开始就设置一个表,包含了进出,设置一个标志位flag:1表示进,0表示出
------解决方案--------------------
这样就不用union 两个表了,同时,根据标志位,取出相应的数据
------解决方案--------------------
引用:
Quote: 引用:

我觉得可以一开始就设置一个表,包含了进出,设置一个标志位flag:1表示进,0表示出


我说的这个表是各个单据交易时的那个明细记录


恩,你的意思是原来,你有多个单据,每个单据都有一张表,为了方便你不想汇总时,每次都union 。

这样的话,我觉得还是最好不要加表了,通过建立索引,过滤数据,可以加快查询的速度的,就算每次都要union
------解决方案--------------------
我觉得销售、采购这些可以何在一个表,对应的明细也合在一个表
------解决方案--------------------
引用:
销售单、销售商品明细
采购单、采购商品明细
销售退货单、销售退货商品明细
采购退货单、采购退货商品明细
入库单、入库商品明细
出库单、出库商品明细
调拨单、调拨出库商品明细、调拨入库商品明细
.........
就是是否需要新增一张表来把交易审核后的明细记录下来(销售商品明细、采购商品明细、销售退货商品明细、采购退货商品明细、.......)


就像你上面说的,是可以建立一张表,但是我觉得建了这个表,会导致业务逻辑更加复杂,容易出错。

------解决方案--------------------
如果新建了表,因为你要修改数据,必须连着这个新建的表也一起 修改,就容易出错,而且需要修改原来已经稳定的程序,会增加工作量,还不需要测试。

如果性能更为重要,那么就新建一个表,修改相应的模块代码,只要测试通过后,就行了。

这个是一个折中的问题,2种方式,各有特点,关键在于你更倾向于哪种
------解决方案--------------------
数据量大可以按照区域来做分区
------解决方案--------------------
数据量非常非常庞大时,单实例成为瓶颈时,可以按照区域来做分库
实例横向扩展,分布式事务由数据库上层控制
HA由中间层控制
失效的订单:比如退单、已提交不会被修改的订单等。移除sql server,转入分布式DB持久化,业务上支持读访问。其他正常业务不变
------解决方案--------------------
我上家公司也是做ERP的,最大的客户600多个店,单表记录也就4000多万而已,都还没达到要分区的地步。
------解决方案--------------------
Master 撸,求实例,理论的东西看不懂

引用:
数据量非常非常庞大时,单实例成为瓶颈时,可以按照区域来做分库
实例横向扩展,分布式事务由数据库上层控制
HA由中间层控制
失效的订单:比如退单、已提交不会被修改的订单等。移除sql server,转入分布式DB持久化,业务上支持读访问。其他正常业务不变