概述
与以往不同,本次献上一份有料的中秋“ES月饼”:一个仅500K的ES数据库备份包。
消化这块“ES月饼”不但能掌握UD表
、视图汇总
等设计方法,还能获得一套完整的多仓库+批次管理
的ES仓储系统设计方案。
这个“月饼库”中实际上只包含4个模板,尽管如此,却足以颠覆
许多朋友以往的经验和观念。
望月
-
进入“月饼库”我们能看到三个分类:单据,基础和查询。
-
单据中包含
入库单
和出库单
,基础中包含仓库信息
和物料表
,一共四个模板。
–物料表–
–仓库信息–
–入库单–
- 乍一看,示例数据很大众化。但我们要注意一个范式细节,入库单的明细部分只存储了
编码
,批号
,数量
和备注
。
注:关于数据库范式,请自行查阅相关资料以了解。
探月
- 打开入库单,我们能看到完整的单据,上面不仅有描述还有单位等信息。
- 按照数据库范式,有了物料编号,那么
描述
,单位
等信息可以通过物料表查得,单据上就不需要保存这些字段。为了和用户交互,我们在数据明细表(D表)上叠加一个UI明细表(U表),这个U表不创建数据库表。这种设计方法就是UD表
。
注:关于叠加方法请参考第五弹移花接木
- 入库单的数据表定义实际如下,主表外的两个明细表为:入库单_U、入库单_D。
邀月
- 在前面的物料表中并没有定义库存字段,入库单和出库单中也没有回写公式。在“月饼库”查询分类下有一个库存表,它实际是一个
视图汇总
。
- 这个视图的定义如下:
create view v_ZKC
as
select B2.描述,B1.数量,B2.单位,B2.物料编码,B2.物料分类
from (
select物料编码,sum(数量) as 数量
from ( select 物料编码,数量
from 入库单 A1,入库单_D A2 where A1.excelserverrcid=A2.excelserverrcid
union all
select 物料编码,-数量
from 出库单 A3,出库单_D A4 where A3.excelserverrcid=A4.excelserverrcid
) N
group by 物料编码
) B1
right join 物料表 B2 on B1.物料编码=B2.物料编码
- 该视图除了做自定义库存查询,还可做单据中使用的库存列表数据规范的数据源。
- “月饼库”除了总库存视图,还有
进出明细
视图,批次库存
视图,在此不再赘述。
- 品月
“月饼库”是一个较完整的生态,也是所有系统的一个缩影,例如:BOM
、CRM
、HRM
、MRP
等。
本文着重介绍其中的两种设计方法:UD表
和视图汇总
。使用UD表可以使数据库设计符合范式,减少冗余;而使用视图汇总除了避免表间公式偶尔失灵的尴尬,还能有效减小数据库体积。
关于“月饼库”中的其他技巧细节,需要读者慢慢体会。