库存表设计

zhuxianguo 2011-10-31 10:53:41
在系统里面有盘点表,入库表,订单表,退货表,库存表,原来的设计是发生业务后直接更新库存表里面的数量,但是到到月底的时候总会有误差,现在想去除库存表,通过视图来实现,现在有个选择一是通过表关联计算出库存,二是建立一个库存业务日志,需要把有关库存的业务建立一个日志,通过汇总日志来计算出库存这种方法快,只是这样需要维护库存日志,如果不一致又回造成计算结果不准
...全文
3291 65 打赏 收藏 转发到动态 举报
写回复
用AI写文章
65 条回复
切换为时间正序
请发表友善的回复…
发表回复
janezhangxy 2014-02-26
  • 打赏
  • 举报
回复
我也是有一个库存表的 有记录 日期、仓库、产品、期初库存数量/金额 各种单据的数量,金额。 如果修改了某天的单据,那么接下来的都会有要调整的,一旦其他人员也有在操作,就会产生数据不一致的问题。所以我就想拿掉这个库存表。但是拿掉后,也将会面临着出库时判断库存量,查找报表时需要把所有的单据都查一次,查询速度是一个问题。
zhuxianguo 2012-11-22
  • 打赏
  • 举报
回复
引用 63 楼 ydsunny 的回复:
事实上,不一定非要存在库存表的。 以前我们做过一个ERP项目,开始设计时,便是用库存表的方式,出入库都会以事务控制来更新库存表。理论上,这样应该能确保库存表的库存数是准确的。事实上,运行了二年后,总会时不时,不规律地出现库存数有误差的情况。非实物的盘盈盘亏,而是“库存数<>(入库数+出库数)”,检查过程序代码及Sql,都没解决问题。 最后,采取了通过“月结表+交易”的……
这哥们的思路不错,我正在用的就是这种,只是视图性能有必要优化
datafansbj 2011-11-10
  • 打赏
  • 举报
回复
1、库存表是必须存在的,这是ERP设计的基本原则(注意软件开发应用与理论还是有区别的);
2、库存数不准,是账面数与实际数不准(可通过盘点来纠错,发生的原因是库存实际数发生了改变而没走帐),还是账面上对账就不准(软件设计或编码错误,属于BUG)?,需要分清楚再处理;
3、不排除数据库系统本身的BUG,如事务的不一致性,断电造成数据错误等,不过可能性极小。
zhuxianguo 2011-11-05
  • 打赏
  • 举报
回复
[Quote=引用 56 楼 jxlee365 的回复:]

楼主说的这个现象我以前也遇到过。
在我们的ERP程序中,出入库动作与更新库存表的动作是写在一个事务里面的,理论上应该不会有偏差,
在小数据量的测试中也正常。但在客户现场运行后(我们的客户每月的业务量以万单计),库存表里的即时数与计算出的查询数几乎每个月都会有几个物料发生偏差。我有两个朋友,一个作用友代理,一个作金蝶代理。他们都说用友金蝶也有这个问题。金蝶是通过一个大概叫‘更新现存量’的功能来……
[/Quote]
还是这位朋友说得符合实际,有些东西不能光从理论上来分析,理论和实际是有偏差的
zhuxianguo 2011-11-05
  • 打赏
  • 举报
回复
[Quote=引用 55 楼 mstop 的回复:]

估计是刚学进销存的...把麻烦留给企业的那种.
[/Quote]
什么意思,不懂?
xiaoxiangqing 2011-11-05
  • 打赏
  • 举报
回复
用库存表可以加快速度
meng_zhixiang 2011-11-05
  • 打赏
  • 举报
回复
关注ING。。。
JXLEE365 2011-11-04
  • 打赏
  • 举报
回复
楼主说的这个现象我以前也遇到过。
在我们的ERP程序中,出入库动作与更新库存表的动作是写在一个事务里面的,理论上应该不会有偏差,
在小数据量的测试中也正常。但在客户现场运行后(我们的客户每月的业务量以万单计),库存表里的即时数与计算出的查询数几乎每个月都会有几个物料发生偏差。我有两个朋友,一个作用友代理,一个作金蝶代理。他们都说用友金蝶也有这个问题。金蝶是通过一个大概叫‘更新现存量’的功能来纠偏的;用友更绝,不提供任何纠偏手段。我怀疑是 sql server在事务隔离级别或者事务操作上的非原子性造成的。不知道其他数据库怎样。
回到现实,我认为,楼主如果不用现存量作类似MRP演算的动作的话,取消库存表用即时计算查询也是可以的;否则就采用金蝶方式来解决吧。

qdu123 2011-11-04
  • 打赏
  • 举报
回复
[Quote=引用 46 楼 zhuxianguo 的回复:]

引用 27 楼 haiwer 的回复:

理论上,库存表就是个冗余表,因为影响库存变化的数据全部有记录,没有库存表也能计算库存。
既然是冗余表,是否有必要存在主要看应用,你的应用需要读取实时库存,这就是库存表存在的必要性依据,否则你每次读取实时库存都重新计算的话,重复计算会造成很大的浪费。
你的汇总日志的想法非常奇怪也非常没有经验,因为如果有一个汇总的日志表,这个表也是冗余表,因为与入库……
[/Quote]

使用事务控制就行,经常反审说明管理不到位
华芸智森 2011-11-04
  • 打赏
  • 举报
回复
估计是刚学进销存的...把麻烦留给企业的那种.
Fing_king 2011-11-04
  • 打赏
  • 举报
回复
你系统中入库损益情况不做考虑吗?
华芸智森 2011-11-03
  • 打赏
  • 举报
回复
没库存表???咋盘点?如何作各种库存和仓管的KPI?如何ABC分类?
jyh070207 2011-11-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fredrickhu 的回复:]
根据哥的经验 库存表要是你去掉了就难做了
[/Quote]
实时库存还是很有必要的,关键要整清楚月初准,到月底不准的原因,查找中间进入记录有没有处理正确?
zhuxianguo 2011-11-03
  • 打赏
  • 举报
回复
[Quote=引用 50 楼 mstop 的回复:]

没库存表???咋盘点?如何作各种库存和仓管的KPI?如何ABC分类?
[/Quote]
没有库存表,保留库存视图,通过最近盘点数和最近业务计算
初步设想,建立如下表:

库存月结表
单据记录(主从表,入库,出库,订单,退货,调货都在这个表里面,通过字段区分类型)
库存视图
zhao_zps 2011-11-02
  • 打赏
  • 举报
回复
初来乍到
想不通库存怎么会出错?
1.代码有问题(多表处理出错时没做事务回滚)
2.库存丢失
rainzero 2011-11-02
  • 打赏
  • 举报
回复
关注中。。。。。。。
cmHua 2011-11-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhuxianguo 的回复:]
公司原来的系统是存实时库存的,只是月底盘点总有误差,所以现在想折中一下,取两种方案的优点来做,因为我分析新的erp速度慢很大一部分原因是因为多表操作效率很低,如果把和库存相关的数据同时写入一个库存日志表,用的时候通过单表汇总速度会快很多,此外还可以通过月结,把历史数据转移到历史数据表,这样计算又可以改进一下
[/Quote]

盘点发现有误差,这个时候应该首先去分析这是人为的问题,还是软件的问题。如果你软件写的没有错,那么根据业务单据算出来的库存表也不会有问题。
我觉得这个并不是你要修改这种存储方法的最根本原因,原因可能是你找不出为什么会有差,是人为的还是软件漏洞。其实你就算用了新的存储方式,你也会发现盘点的时候会有差异,因为软件是不可能控制到方方面面的,有很多环节还是人去操作,只要有人操作的地方,就有可能会有人为的错误。
潇洒王子 2011-11-02
  • 打赏
  • 举报
回复
继续关注
zhuxianguo 2011-11-02
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 sql777 的回复:]

没库存表,你怎么统计库存?统计所有数据?..
[/Quote]
没有库存表,保留库存视图,通过最近盘点数和最近业务计算,因为最近一个月的数据修改的几率还是蛮大的
zhuxianguo 2011-11-02
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 haiwer 的回复:]

理论上,库存表就是个冗余表,因为影响库存变化的数据全部有记录,没有库存表也能计算库存。
既然是冗余表,是否有必要存在主要看应用,你的应用需要读取实时库存,这就是库存表存在的必要性依据,否则你每次读取实时库存都重新计算的话,重复计算会造成很大的浪费。
你的汇总日志的想法非常奇怪也非常没有经验,因为如果有一个汇总的日志表,这个表也是冗余表,因为与入库、出库等表内容重复,只是这个是汇在一起的,汇在……
[/Quote]

这个日志表建立的期初原因是觉得单表操作比多表关联快,后来经过比较感觉还是不保留日志表,减少维护成本,和不一致的几率
加载更多回复(42)

34,836

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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