当前位置: 代码迷 >> Sql Server >> 库藏表设计
  详细解决方案

库藏表设计

热度:58   发布时间:2016-04-25 00:15:02.0
库存表设计
在系统里面有盘点表,入库表,订单表,退货表,库存表,原来的设计是发生业务后直接更新库存表里面的数量,但是到到月底的时候总会有误差,现在想去除库存表,通过视图来实现,现在有个选择一是通过表关联计算出库存,二是建立一个库存业务日志,需要把有关库存的业务建立一个日志,通过汇总日志来计算出库存这种方法快,只是这样需要维护库存日志,如果不一致又回造成计算结果不准
------解决方案--------------------
引用:
我在建表的时候想,既然建立库存日志要维护,何不把和库存相关的业务表在一个表里面实现,这样也就不用单独建立库存日志表,如果是这个思路的话,入库,销售,退货,都在一个表里面,不知道是否可行

建多个表,可能更有利于数据处理,因为它已经分过类.建一个表,在查询的时候要区别不同的类似,会降低效率.
如果要一次获得入库,销售,退货的所有信息,可以用多个表联合查询.
------解决方案--------------------
你得说清楚那个误差是怎么来的,我不认为是因为有了库存表所以有误差
去掉库存表并不能解决问题,库存表也不该去掉,那会使问题复杂很多
------解决方案--------------------
更新与查询相比,操作的几率总是要小很多的.
------解决方案--------------------
引用:
引用:

你得说清楚那个误差是怎么来的,我不认为是因为有了库存表所以有误差
去掉库存表并不能解决问题,库存表也不该去掉,那会使问题复杂很多

库存表存在,好处是可以很迅速的查出当前可用库存,缺点就是当和库存相关的业务发生变化时候要及时的更新库存表


发生库存相关业务的时候要更新库存是很自然的事情,这算什么缺点,导致库存变化的事件也不多,进货出货退货。
如果用查询做,事情就复杂化了,如果生成订单时需要查询库存是否足够怎么做,如果库存低于某个值需要进货怎么做,你眼里只盯着如何计算库存,将来有新需求是很麻烦的。


------解决方案--------------------
引用:
在系统里面有盘点表,入库表,订单表,退货表,库存表,原来的设计是发生业务后直接更新库存表里面的数量,但是到到月底的时候总会有误差,现在想去除库存表,通过视图来实现,现在有个选择一是通过表关联计算出库存,二是建立一个库存业务日志,需要把有关库存的业务建立一个日志,通过汇总日志来计算出库存这种方法快,只是这样需要维护库存日志,如果不一致又回造成计算结果不准

你这种情况,很有可能是数据库内并发事务处理的问题。可以建立一个业务流水表,在流水表内记录业务发生额及发生后的即时库存情况来跟踪。
------解决方案--------------------
理论上,库存表就是个冗余表,因为影响库存变化的数据全部有记录,没有库存表也能计算库存。
既然是冗余表,是否有必要存在主要看应用,你的应用需要读取实时库存,这就是库存表存在的必要性依据,否则你每次读取实时库存都重新计算的话,重复计算会造成很大的浪费。
你的汇总日志的想法非常奇怪也非常没有经验,因为如果有一个汇总的日志表,这个表也是冗余表,因为与入库、出库等表内容重复,只是这个是汇在一起的,汇在一起大部分情况下计算速度不如分开,因为汇在一起增加了数据之间的影响,所以这个想法完全无效,而且可能速度更加不如从前。

月结表+计算当月变化量应该是个平衡比较好的方法,搂主考虑下。
其实,排除BUG,维护准确的实时库存表难度也不会太大。

------解决方案--------------------
入库表,订单表,退货表,库存表

在入库、产生订单或者退货的时候,同步更新库存表的数据。
------解决方案--------------------
我个人经验:
1.使用库存表,好处是查询快,即时库存,作为BOM物料分析没有这个是不可能不现实的。(事务更新,可防止差错)
2.使用库存帐,月未自动逐笔单结帐,正好与库存表对照。由于库存帐是精准的,可以用以向库存表同步。

我主要用MSSQL和MYSQL两种数据引擎,我建议做小型ERP要注意如下内容:
1.设计好表,别过多使用索引、联合UNION、视图、存储过程
2.表名要用小写英文,组合词用下划线连接,如customer_prices

好处是方便更换数据引擎。我以前认为我不会用除MSSQL以外的引擎,后来接触了MYSQL发现价值更大。
------解决方案--------------------
初来乍到
想不通库存怎么会出错?
1.代码有问题(多表处理出错时没做事务回滚)
2.库存丢失

1、代码问题必须要修改的。
2、仓库管理中有报损报溢处理,所以我的考虑是这样的:
A、保存仓库表,表中有账面库存、实际库存(只在盘点时使用)、占用库存(各种已经占用还未真正出库的)
B、增加入库单表、出库单表、库存转移单表、库存调整单表、以及各自的明细表
C、所有走系统的数据,会影响到仓库表的账面库存和占用库存。在库存盘点时更新实际库存。然后仓库管理员根据实际库存和账面库存的不同做出库存调整单(这个在实际是经常出现的,比如货物损失掉了或者货物发错,A货物比账面库存少1件,B货物比账面库存多一件)。
  相关解决方案