各位给个意见,哪种方案更靠谱?
做的是进销存管理软件,涉及货物进出,每张单据标准结构都是:
主单据+明细单据(保存商品);
现在问题是,是否需要新增一张 所有货物进出的明细表,这样便于后续查询统计,不需要用UNION 进行连接查询。
1.增加这张表的话,每次出库时都要新增记录;容易出错;但后续查询统计要快些;
2.不增加这张表的话,采取动态连接查询统计,出错概率低些,但数据量大时速度慢。
------解决方案--------------------我觉得可以一开始就设置一个表,包含了进出,设置一个标志位flag:1表示进,0表示出
------解决方案--------------------这样就不用union 两个表了,同时,根据标志位,取出相应的数据
------解决方案--------------------
恩,你的意思是原来,你有多个单据,每个单据都有一张表,为了方便你不想汇总时,每次都union 。
这样的话,我觉得还是最好不要加表了,通过建立索引,过滤数据,可以加快查询的速度的,就算每次都要union
------解决方案--------------------我觉得销售、采购这些可以何在一个表,对应的明细也合在一个表
------解决方案--------------------销售单、销售商品明细
采购单、采购商品明细
销售退货单、销售退货商品明细
采购退货单、采购退货商品明细
入库单、入库商品明细
出库单、出库商品明细
调拨单、调拨出库商品明细、调拨入库商品明细
.........
就是是否需要新增一张表来把交易审核后的明细记录下来(销售商品明细、采购商品明细、销售退货商品明细、采购退货商品明细、.......)
就像你上面说的,是可以建立一张表,但是我觉得建了这个表,会导致业务逻辑更加复杂,容易出错。
------解决方案--------------------如果新建了表,因为你要修改数据,必须连着这个新建的表也一起 修改,就容易出错,而且需要修改原来已经稳定的程序,会增加工作量,还不需要测试。
如果性能更为重要,那么就新建一个表,修改相应的模块代码,只要测试通过后,就行了。
这个是一个折中的问题,2种方式,各有特点,关键在于你更倾向于哪种
------解决方案--------------------数据量大可以按照区域来做分区
------解决方案--------------------数据量非常非常庞大时,单实例成为瓶颈时,可以按照区域来做分库
实例横向扩展,分布式事务由数据库上层控制
HA由中间层控制
失效的订单:比如退单、已提交不会被修改的订单等。移除sql server,转入分布式DB持久化,业务上支持读访问。其他正常业务不变
------解决方案--------------------我上家公司也是做ERP的,最大的客户600多个店,单表记录也就4000多万而已,都还没达到要分区的地步。
------解决方案--------------------Master 撸,求实例,理论的东西看不懂
数据量非常非常庞大时,单实例成为瓶颈时,可以按照区域来做分库
实例横向扩展,分布式事务由数据库上层控制
HA由中间层控制
失效的订单:比如退单、已提交不会被修改的订单等。移除sql server,转入分布式DB持久化,业务上支持读访问。其他正常业务不变