日志式库存管理的设计思路解释
来源:互联网 发布:caffe 分布式 编辑:程序博客网 时间:2024/04/30 00:36
<script type="text/javascript"><!--google_ad_client = "pub-0246923946865164";/* 728x90, created 10/10/09 */google_ad_slot = "1248078023";google_ad_width = 728;google_ad_height = 90;// --></script>
日志式库存管理的设计思路解释
日志式的管理是一种流水帐式的登记方式,其核心思路是对所有操作进行记录,特征是只登记不修改与删除。
一. 日志结构
单据名称:如:入库单,出库单,调整单等
单据编号:某一特定单据的编号
库存状态:记录各种单据对库存的影响方式为加或减
操作类型:记录当前操作是审核还是撤审。如同样是减库存,也要分是撤审的减库存还是退货的减库存或者调拨仓库的减库存
登记时间:是记录产生加减库存的日期。它在日库存统计起重要作用
物料编码:库存管理中会对每个材料进行唯一编码,以便库存进行管理
物料名称:如已有物料编码,其名称只是对编码的详细中文注释。如工厂对物料编码不能不能理解,信息化基础很差,那么中文名称将是工厂操作人员通俗的理解方式,系统在此做预留也就是可以满足此类用户的需求,库存在统计时同样可以按物料名称来统计。物料名称因此可以广义的理解为用户可接受的扩展属性。如:幅宽,规模,颜色,尺码等。只要是用户可以记忆的信息,都可以归入名称范畴。
发生数量:是一个正数字。本次数量通过发生数量*库存状态来产生。
创建人和创建时间:通常是记录本单的审核人和审核时间。它与登记时间是有区分的,由于库存统计时对时间的界定一般有两种方式,一种是按审核时间来进行统计库存,另一种是按单据发生时间来统计,两种方式主要区别是发生时间则用户可自行调整,审核时间要求人员操作及时准确。所以通常用户都会采用第一种方式。
二. 日志式结构的优点与缺点
1. 优点:
(1) 所有影响库存的单据全部统一在一张表里进行管理,查询方便。还要方便进行导出备份。
(2) 在做库存查询与统计时的速度优于散在各处相加再进行统计的方式。
(3) 如果日志完整,可根据日志反向生成各种单据。配合第一条优点,可快速进行单据还原。
2. 缺点:
(1) 日志信息目前只适合记录库存增减,不适合记录业务流向。
(2) 日志量庞大,使用一段时间后,做通库查询速度与性能降低。
(3) 日志信息普通操作人员不易看懂,必须是对整个系统较为熟悉的人员才能读懂。
3. 解决方案:
对于业务流程的数据展示通过前面界面做针对性强的开发,而后台库存运算则采用库存日志的方式实现。
针对日志表做数据库存储文件的优化,根据时间段多做结果表,生成日结,月结,加快查询速度,将经常查询区域的数据进行分区域管理,提升整体查询性能。原则上以十万条数据作为一个查询速度减慢的监界点。十万条以内的查询速度还是可以接受的。
最终操作用户不需要看懂此日志表,他们看到的都是在日志表基础上经过加工的、用户可能看得懂的界面信息。如果一个有经验的程序员,在看过本文的介绍以后就可以马上理解日志表的作用。
三. 其它
1. 一条SQL产生期初、期末库存表。(从技术上可以达到求期初,但从实际应用考虑不推荐此法,此仅应用于数据稽核时)。
select tb.pm,tb.frq,tb.gg,
decode(row_number() over(partition by tb.pm order by tb.PM,tb.RQ,tb.gg),1,0,
LAG(l_bqlj, 1, 0) OVER (ORDER BY tb.PM,TB.RQ,tb.gg)) AS prev_BQJC,
tb.bqrk,tb.bqck,tb.l_bqlj
from
(select ta.pm,ta.gg,ta.rq,ta.bqrk,ta.bqck,
SUM(ta.bqlj) OVER (PARTITION BY ta.pm,ta.gg
ORDER BY ta.PM,ta.gg,ta.rq
RANGE UNBOUNDED PRECEDING) l_bqlj
from
(SELECT LSZ.物料名称 pm, LZS.规格 GG,to_char(LSZ.登记时间,'yyyy-mm') rq,
sum(decode(LSZ.库存状态,1, LSZ.数量,0)) bqrk,
sum(decode(LSZ.库存状态,-1,LSZ.数量,0)) bqck,
sum(decode(LSZ.库存状态,1, LSZ.数量,0)) -
sum(decode(LSZ.库存状态,-1,LSZ.数量,0)) bqlj
FROM (select 物料名称,登记时间,规格,库存状态,数量
from 日志结构 b
where to_char(登记时间,'yyyymm') >= '200810'
union
SELECT a.物料名称,to_date('200810','yyyymm') 登记时间,a.规格,0 库存状态,0 数量
FROM 日志结构 a
GROUP BY a.物料名称,a.登记时间,a.规格
group by to_char(LSZ.登记时间,'yyyy-mm'),LSZ.物料名称
order by to_char(LSZ.登记时间,'yyyy-mm'),LSZ.物料名称) TA) tB
分析:
1. 竖值变横使用DECODE把满足条件的记录数量保留下来,不满足条件的过滤为0。
2. SUM进行累计运算。
3. LAG错位进行结转运算。
4. UNION做结转表
<script type="text/javascript"><!--google_ad_client = "pub-0246923946865164";/* 728x90, created 10/10/09 */google_ad_slot = "1248078023";google_ad_width = 728;google_ad_height = 90;// --></script>
- 日志式库存管理的设计思路解释
- 日志式库存管理的设计思路解释
- 日志式库存管理的设计思路解释
- SAP的库存管理
- 后台管理系统操作日志模块设计思路
- BBS 设计思路系列 ---- 管理的透明性
- 权限管理组件的设计、开发思路
- 库存数据库表的设计
- 库存数据库表的设计
- 关于库存表的设计
- OpenERP库存管理的若干概念讲解(新增库存价值)
- 库存管理
- 库存管理
- 库存管理
- 权限管理系统 设计思路
- 订单管理系统设计思路
- 权限管理数据库设计思路
- 供应商管理库存的信息支撑系统
- C++虚函数及虚函数表解析
- CListBox & CCheckListBox 使用技巧
- Java开发Oracle数据库的ORA-01000错误解析
- Java内存释放心得
- [新闻] 微软一月十三日发行一个安全补丁
- 日志式库存管理的设计思路解释
- 2010年互联网领域8大预言
- 原点
- TCPMP相关资源
- Boost Phoenix 入门 (1)
- CSDN博客编辑器亟待改进 自测老化指数的工具不能用
- 就这样,走了?
- memcachedb 分析
- java IO