2.4数据仓库的建模(二)
2.4数据仓库的建模(二)
P2大家好,本次课我们继续学习数据仓库的建模,我们将从以下几个方面入手学习:主题确立及粒度划分、星形模式、雪花模式、多维数据模型比较。
P3主题域确立及粒度划分
数据仓库或数据集市的一个重要特性是面向特定主题的,所以主题域的选取成为最初的一个重要议题。主题选取的原则是优先实施管理者目前最迫切需求、最关心的主题。主题内容的描述包括主题的公共键、主题之间的联系和各主题的属性。例如,若以顾客为主题,则设计的相关主题内容的描述会涉及到顾客的基本信息,如顾客号、顾客姓名、性别、年龄、文化程度、住址、电话等;会涉及到顾客的经济信息,如顾客号、年收入、家庭总收入等;另外顾客的公共键,如顾客号是顾客表的主健,供外部表引用。
P4确定事实表的粒度
确定主题域之后,我们要进一步确定事实表的粒度。事实表的粒度能够表达数据的详细程度。从用途的不同来说,事实表可以分为以下三类:(1)原子事实表:是保存最细粒度数据的事实表,也是数据仓库中保存原子信息的场所。(2)聚集事实表:是原子事实表上的汇总数据,也称为汇总事实表。(3)合并事实表:是指将位于不同事实表中处于相同粒度的事实进行组合建模而成的一种事实表。
P5确定数据分割策略
下一步我们要确定数据分割策略。分割是指把逻辑上是统一整体的数据分割成较小的、可以独立管理的物理单元进行存储,以便能分别处理,从而提高数据处理的效率。分割可以按时间、地区、业务类型等多种标准来进行,也可以按自定义标准,分割之后小单元的数据相对独立,处理起来更快更容易。但在多数情况下,数据分割采用的标准不是单一的,而是多个标准的组合。
P6星形模式
由于数据仓库目前大多是使用关系数据库来实现的,所以本节主要讨论基于关系数据库的数据仓库建模方法。常见的基于关系数据库的多维数据模型有星形模式、雪花模式。星形模式(Star schema)是由一个事实表和一组维表组成,每个维表都有一个维主键,所有这些维组合成事实表的主键,换言之,事实表主键的每个元素都是维表的外键。如图所示,该模式的核心是事实表,通过事实表将各种不同的维表连接起来,各个维表都连接到中央事实表。星形模式有以下特点:(1)维度表只与事实表关联,维度表彼此之间没有任何联系。(2)每个维度表中的主码都只能是单列的,同时该主码被放置在事实数据表中,作为事实数据表与维表连接的外码。(3)星型模式是以事实表为核心,其他的维度表围绕这个核心表呈星型状分布。
P7例子
一个“销售”数据仓库的星形模式如图所示。该模式包含一个中心事实表“销售事实表”和4个维表:时间维表、销售商品维表、销售地点维表和顾客维表。在销售事实表中存储着四个维表的主键和两个度量“销售量”和“销售金额”。这里我们强调,事实表中往往只两类数据,一类存储的是其他维表的主键,另一类存储的是度量值,而且度量值往往是数值型的。在这种事实表中会存在着大量的维表主键的重复值,因为其主要是为了快速对度量值的访问或统计。维表中维一般包含着层次关系,也称为概念分层,如在时间维上,按照“年份-季度-月份”形成了一个层次,其中年份、季度、月份成为这个层次的三个级别。
P8雪花模式
雪花模式(Snowflake schema)是对星形模式的扩展,每一个维表都可以向外连接多个详细类别表。在这种模式中,维表除了具有星形模式中维表的功能外,还连接对事实表进行详细描述的详细类别表,详细类别表通过对事实表在有关维上的详细描述达到了缩小事实表和提高查询效率的目的。星形模式虽然是一个关系模型,但是它不是一个规范化的模型,因为在星形模式中,事实表中存在着大量的数据重复,可以理解为维表被故意地非规范化了。雪花模式对星形模式的维表进一步标准化,对星形模式中的维表进行了规范化处理,故而大大减少了数据重复度。雪花模式的特点有:(1)某个维表不与事实表直接关联,而是与另一个维表关联。(2)可以进一步细化查看数据的粒度。(3)维表和与其相关联的其他维表也是靠外码关联的。(3)也以事实数据表为核心。
P9雪花模式
如图所示,在星形模式中,每维只用一个维表表示,而每个维表包含一组属性。例如,销售地点维表包含地点相关的属性集{Location_id,街道,城市,省,国家},时间维表包含时间相关的属性集{Time_id,日期,年份,季度,月份,周},即各维表中的属性是按类别归属的,维表之间不会交叉。各维表的主键被事实表引用,这样就建立了事实表与维表的关联。
P10雪花模式
但是这种模式可能造成某些冗余,例如,可能存在城市、省、国家字段的数据冗余,如表中例举所示,重复出事了“武汉”,“湖北省”,“中国”。
P11雪花模式
如何进行模式优化呢?我们可以对地点维表进一步规范化,如图所示,我们将原来的地点维表拆分为两个新的有关联的维表:地点维表、城市维表。这样就构成了“销售”数据仓库的雪花模式。
P12如图所示为某个企业的销售情况,通过过销售分析表(事实表)与多个维表相关联,其中门店表、商品表又进行了进一步的规范化,化为多个相关联的维表,从成形成了一个雪花模式。
P13下面我们比较一下雪花模式和星形模式的不同点。星形模式中每一个维表都直接与事实表相连接,不存在渐变维度,所以数据有一定的冗余,即数据行数多;而雪花模型使用的是规范化数据,也就是说数据在数据库内部是组织好的,以便消除冗余,因此它能够有效地减少数据量。星形模式简单,可读性好;雪花模式使用了规范化技术,较复杂,可读性差。星形模式中事实表中维表没有进行规范化,所以维表的数量少;雪花模式中对维表进行了规范化,即扩充了新的维表,导致维表的数量增加。星型模型因为数据的冗余所以很多统计查询不需要做外部的连接,因此一般情况下效率比雪花型模型要高。雪花模型在维度表、事实表之间的连接很多,因此性能方面会比较低。
P14总结
好了,到此本次课就要结束了,我们做一个简短的回顾。本次课对数据仓库主题域确定、粒度划分、数据分割策略进行了说明,并重点对多维数据建模中的星形模式和雪花模式进行分析,这些内容需要大家认真理解并学会运用。
好,这次课到此结束,谢谢!