以库存模块和零售模块这两个模块来谈一谈维度建模的相关事项
梳理库存业务中的表的构造与设计思想
梳理一下缓慢变化维的处理方法与优缺
这篇博客计划用周末来完成,只能简单的讨论一下建模概况,从维度建模这本书中摘录出一些重要的知识点,对于维度建模这本书的报告计划在5.1之前完成,希望结合具体的业务来分享一下
1.理清思路
对库存业务过程的梳理,我们发现有如下过程,向制造商发出购买订单,仓库库存产品,商店库存业务,零售业务
我们发现有如下重要的维度:商店,日期,产品 以及我们要建一张事实表来描述变化以及这张表应该有哪些属性才能描述特征和变化,(在此之前我们要考虑一张事实表是否能够描述真正的业务过程与包含的数据域,以及如果采用一张表面临的可迭代问题,维护性,缺陷)
我们建一张周期性快照表来描述我们的库存(每天的交易数据是离散的),这张周期性快照表有如下的属性:库存数量 交易总量,价值(我们借助这张表能够对企业库存业务高效率运营,例如我们可以分析出那个地区某类书籍买的书最多,对商店的库存进行区域优化),同时我们发现这张表每期更新只有80M的更新/新增(假设有100商店,60000的商品类型)
同时我们还要对仓库的明细事务进行分析,我们考虑建立一张事实表,仓库的事务可能包含如下步骤:
接收产品
将产品放入检验区
将产品从检验区提出
若检验存在问题则将产品返回供应商
产品入库
从库中选择产品
包装产品
将产品运送给客户
从客户处接收产品
将客户返回的产品
重新入库
从库存中删除产品
我们可以考虑使用事务事实表来描述明细过程,但是对于库存明细这种业务是多时间性质的,我们也可以采用累积快照表来描述明细的业务过程,如下:
事务事实表 周期性快照表 累积性快照表
2.价值链集成
3.维度建模
支架表
支架表是对雪花模型的改进,虽然没有雪花模型的清晰性,但是避免了星型模型的复杂性,在维度表上连接一张支架表,节省了空间,支架表和微型维度其实差不多
桥接表(难点)
多对多和多值设置因子的处理方法
4.缓慢变化维
保留原始值
恒久值 常量
重写
无法捕获历史变化,适用于一些常量,过去的量时没有统计的意义的,例如:生日等
增加新行
设置行的失效和有效日期
增加新属性
不适应与多维数据库
增加微型维度
微型维度与重写类型支架表
双重类型一和类型二维度
现在在看一遍,还是不明白这种复合缓慢变化维有什么特殊的作用