数据仓库建模,就是数据的组织和存储办法,它强调从营业动身,将数据有序组织和存储起来。本文做者对数据仓库建模常用模子停止了阐发,一路来看一下吧。
数据仓库建模,就是数据的组织和存储办法,它强调从营业动身,将数据有序组织和存储起来。本文做者对数据仓库建模常用模子停止了阐发,一路来看一下吧。
一、数据仓库建模是什么?
数据仓库建模就是数据的组织和存储办法,举个例子,数据仓库的建模就类似于家庭物品收纳问题,我们会根据物品的特征以及本身的爱好将物品停止一个有条有理的整理收纳,使我们清晰地晓得物品回放的位置,便于日后查找利用,也能无形地让大脑标识表记标帜物档次置,构成回类同一意识,渐渐成为一种好习惯。
数据建模也是如斯,它强调从营业动身,将数据有序组织和存储起来,只要做到如许,数据才能够高效率、高量量、高性能、低成当地利用,才能够更好地撑持企业决策,赋能企业营业,提拔企业综合实力。
二、数据仓库建模常用模子浅析 1. ER模子(实体关系模子)
数据仓库之父Bill Inmon提出的建模办法是从全企业的高度,用实体关系(Entity Relationship,ER)模子来描述企业营业,并用标准化的体例表达出来,在范式理论上契合3NF。
1)什么是实体关系模子
实体关系模子由美籍华裔计算机科学家陈品山创造,用概念数据模子的描述所利用的数据或形式图,实体关系模子将复杂的数据笼统为两个概念——实体和关系。实体表达一个对象,例如商铺、员工那两个对象,关系是指两个实体之间的关系,例如员工和商铺的隶属关系。对象与对象的关系能够分为1-1,1-n,n-n那三品种型,举例阐明:
1-1:一个商铺只能有一个店长,一个店长只能在一个商铺中任职,则商铺和店长就是1对1的关系。
1-n:一个商铺有良多雇员,雇员只属于那个商铺。则商铺和雇员就是1对多的关系。
n-n:商铺里有良多商品,商品也能够在多个商铺售卖,则商铺和商品就是多对多的关系。
2)范式理论是什么?
范式是表构造设想原则的级别,是关系的约束前提的标准,关系型数据库的范式一共有六种,别离是第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF)。遵照的范式级别越高,数据冗余性就越低。
展开全文
因为数据仓库ER建模遵照3范式原则,本文就只针关于前3个范式停止讲解,其他的范式不再赘述, 感兴致的读者能够本身查询下相关材料。
数据库标准化就是利用一系列范式设想数据库(凡是是关系型数据库)的过程,其目标是削减数据冗余,加强数据的一致性,必需要重视的一点是范式存在前置依靠,如要利用第三范式,设想数据库时必需依靠于利用前两个范式的之后,才能够根据第三范式的陆续设想数据库表。详细设想时要根据营业现实流程,一般遵照第三范式即可。
第一范式:强调列的原子性,要求每列属性不成朋分。
上图数据列中商品那一列的数据不是原子数据,它能够陆续朋分成商品数量和商品名称,根据第一范式停止调整后,如下图所示:
第二范式:在1范式的根底上,要求属性必需依靠于主键,不克不及存在部门函数依靠。
函数依靠:某个属性集x决定另一个属性集y时,称另一属性集y依靠于该属性集x。如学号和姓名,通过学号能够找到姓名,那么就说姓名依靠于学号。
完全函数依靠:通过xy能得到z,但是零丁通过x或者通过y得不到z,那么就称z完全依靠于xy。如:学号,课程和功效。能够通过学号和课程得到功效,但是零丁通过课程和学号得不到课程,就说功效完全依靠于课程和学号。
部门函数依靠:通过xy能得到z,通过x得到z或者通过y也能够得到z,那么就说z部门依靠于xy,如学号、姓名和性别,通过学号和姓名能够找到性别,也能够通过学号零丁找到性别,就说性别部门依靠于学号和姓名。
传递函数依靠:通过x能得到y,通过y得到z,那么就说z传递依靠于x,如通过学号得到班级名称,在通过班级名称找到班主任,就能够说班主任传递依靠于学号。
如上图所示:表中的主键假设是(学号、课程)的话,通过(学号、课程)能够找到功效,分数是完全依靠于(学号、课程)但是姓名能够零丁通过学号找到,姓名不完全依靠于找到(学号、课程),故不契合第二范式。调整后如下所示:
第三范式:消弭依靠传递,任何非主属性不依靠与其他非主属性。
如图所示:上边那张表中,假设想要找到辅导,通过学号找到班级,通过班级找到辅导员,存在很明显的函数依靠,故不契合第三范式要求,调整后如图所示:
以上就是关于三范式的相关讲解,那么根据Bill Inmon提出的数仓建模思惟,用ER模子停止建模,起首以京东商城订单流程为例子,整个交易环节中包罗下单,取缔订单、付出,拆单、退款,发货、收货、退换货、评判等,下图为京东商城订单截图。
那么我们以订单营业为例,摘用ER模子遵照3范式建模,根据那种体例将数据停止标准化处置,则能够构建出下图所示的数仓模子,值得重视的是下图只是将一部门交易流程停止了绘造,订单风控、订单退货退款、订单评判等还没有绘造到模子中。
从图中我们能够看出根据如许的体例停止数据建模,固然削减了数据冗余性,包管了数据的一致性,但是假设要查询一个相关的目标或者事实可能需要联系关系十几张表,在数据量小,有索引的情状下可能还好些,假设数据量非常惊人,数以亿计,那查询的速度可能非常迟缓,以至可能会形成宕机,显而易见那种模子不太合适间接利用于营业阐发和计算场景。
2. 维度模子
维度模子是Ralph Kimball 在90年代提出的数仓建模理论,并在于1996年发布的《The Data Warehouse Toolkit》一书中详尽介绍了维度建模理论常识。
维度建模之所以能遭到普遍的存眷和承认,一方面是因为它从企业决策阐发做为起点,为数据阐发办事,它的初志是旨在,利用户更快的完成数据阐发,以及更好地实现大规模复杂的查询操做。别的一方面,得益于手艺的开展,根底存储硬件的成本逐年降低,同时硬件的计算性能也大幅度提拔,才使得维度建模可以走上汗青舞台,得到国表里企业和用户的认同。
维度模子将企业的营业通过两个方面停止数据建模,即事实表和维度表。事实凡是指企业详细的营业过程,如登录、注册、加购、下单等等,需要重视的是建模时凡是会抉择最细粒度的营业过程数据做为事实表,如订单事实表会选订单明细表做为根底事实表,而上边简述的ER模子则选订单主表做为根底,维度凡是指营业过程发作时所处的情况,若何人、何地、何时、何种工具,何种办法做了哪些工作。
详细细节应该联络营业过程,通过5W2H的办法停止阐发,绘造出详细的总线矩阵。根据维度建模理论,我们将上述订单过程停止了一个初步建模,中间的为事实表,周边的为维度表,需要重视的是,本次建模的内容和上边ER模子讲解连结了一致,所以也没有涵盖所有的维度,如图所示:
从上图中能够看出,维度建模数据构造相对ER模子来说,更为清晰简洁,查询时连表操做相对较少,能够及时响应大量且复杂的查询操做,提拔营业阐发速度,快速撑持营业决策。但是数据存在大量冗余,需要消耗大量存储空间。
本文由 @菜鸟数据之旅 原创发布于人人都是产物司理,未经做者答应,制止转载
题图来自Unsplash,基于CC0协议