简述三范式是什么,举些例子 ?

1、维度建模
维度建模主要有4个步骤:选取业务过程、定义粒度、确定维度和确定事实。这4个步骤贯穿了维度建模 的整个过程和环节。
1)选取业务
过程业务过程即企业和组织的业务活动,它们一般都有相应的源头业务系统支持。对于一个超市来说, 其最基本的业务活动就是用户收银台付款;对于一个保险公司来说,最基本的业务活动是理赔和保单 等。当然在实际操作中,业务活动有可能并不是那么简单直接,此时听取用户的意见通常是这一环节最 为高效的方式。
需要注意的是,这里谈到的业务过程并不是指业务部门或者职能。模型设计中,应将注意力集中放在业 务过程而不是业务部门,如果建立的维度模型是同部门捆绑在一起的,就无法避免出现数据不一致的情 况(如业务编码、含义等)。因此,确保数据一致性的最佳办法是从企业和公司全局与整体角度,对于 某一个业务过程建立单一的、一致的维度模型。
2)定义粒度
定义粒度意味着对事实表行实际代表的内容和含义给出明确的说明。粒度传递了事实表度量值相联系的 细节所达到的程度的信息。其实质就是如何描述事实表的单个行。
典型的粒度定义包括:
超市顾客小票的每一个子项; 医院收费单的明细子项;
个人银行账户的每一次存款或者取款行为; 个人银行账户每个月的余额快照。
对于维度设计来说,在事实表粒度上达成一致非常重要,如果没有明确的粒度定义,则不能进入后面的 环节。如果在后面的环节中发现粒度的定义不够或者是错误的,那么也必须返回这一环节重新定义粒 度。
在定义粒度过程中,应该最大限度地选择业务过程中最为原子性的粒度,这样可以带来后续的最大灵活 度,也可以满足业务用户的任何粒度的分析需求。
3)确认维度
定义了粒度之后,相关业务过程的细节也就确定了,对应的维度就很容易确定。正如前文所述,维度是 对度量的上下文和环境的描述。通过维度,业务过程度量与事实就会变得丰富和丰满起来。对于订单来 说,常见的维度会包含商品、日期、买家、卖家、门店等而每一个维度还可以包含大量的描述信息,比 如商品维度表会包含商品名称、标签价、商品品牌、商品类目、商品上线时间等。
4)确认事实

确定事实通过业务过程分析可能要分析什么来确定。定义粒度之后,事实和度量一般也很容易确定,比 如超市的订单活动,相关的度量显然是销售数量和销售金额。
在实际维度事实设计中,可能还会碰到度量拆分的问题,比如超市开展单个小票满10减10元的活动,如 果小票金额超过10元,这10元的优惠额如何分配到每一个小票子项实际设计中,可以和业务方具体讨论 并制订具体的拆分分配算法。
2、事实表设计
事实建模主要有5个步骤:选取业务过程、定义粒度、确定维度、确定事实和冗余维度。
1)选择业务过程以及确定事实表类型
比如淘宝的订单流转的业务过程有四个:创建订单,买家付款,卖家发货,买家确认收货。 明确了业务过程后,根据具体业务需求来选择与维度建模有关的业务过程。
比如买家付款这个业务过程,那么事实表应只包括买家付款这一个业务过程的单事务事实表。
总而言之就是选择了哪些业务过程,那么所建立的事实表应为包含了所有业务过程的累积快照事实表。
2)声明粒度
粒度声明非常重要,尽量选择最细级别的原子粒度,以确保事实表的应用具有最大的灵活性,比如一次 购物车下单,一个父订单可能是购物车,一个子订单是每个商品的订单,那么订单事实表选择子订单粒 度
3)确定维度
完成粒度声明意味着声明了主键,对应的维度组合就可以确定了。应该选择能够清楚描述业务过程的维度信息。
例如订单事实表,粒度为子订单,相关的维度有卖家、买家、商品,收货人,时间等维度。
4)确定事实
应该选择与业务过程有关的所有事实,且事实的粒度要和声明的粒度一致,比如在淘宝订单付款事务事 实表中,同粒度的事实有子订单分摊的支付金额、邮费、优惠金额等。
5)冗余维度
大数据的事实表设计中,冗余尽可能多的维度让下游方便使用,减少连表数量。

发表评论

后才能评论