维度建模
数据库设计中的维度建模与事实建模

数据库设计中的维度建模与事实建模在数据库设计中,维度建模和事实建模是两种重要的建模方法。
维度建模和事实建模针对不同的数据类型和数据关系进行建模,在构建数据仓库或者业务智能系统时起到关键的作用。
本文将介绍维度建模和事实建模的概念、原则以及应用场景。
一、维度建模维度建模是指以维度为中心进行数据建模的方法。
维度是一种反映业务面向用户部门的数据元素,是衡量和分析业务过程的关键属性,如时间、地点、产品、客户等。
维度建模的核心概念是"星型模型",其中一个中心表(事实表)与多个维度表相连。
1. 基本原则(1)维度应该具有唯一性和确定性。
(2)维度应该是可测量的属性,并且应该为业务过程的关键属性。
(3)维度之间应该具有层次关系。
2. 维度建模的步骤(1)识别关键业务过程和需求。
(2)识别和定义需要使用的维度。
(3)确定维度之间的层次关系。
(4)设计事实表,并且确定与维度表之间的关系。
(5)设计维度表。
(6)定义维度表之间的关系。
3. 应用场景维度建模适用于需要对业务过程进行度量和分析的场景,如经营决策、市场分析、销售分析等。
维度建模能够提供简洁、易于理解的数据模型,使得用户能够直观地分析和进行决策。
二、事实建模事实建模是指以事实为中心进行数据建模的方法。
事实是与业务过程中的事件和活动相关的数据集合,如销售金额、订单数量等。
事实建模的核心概念是"雪花模型",其中一个中心表(事实表)与多个维度表相连,并且维度表之间可以进一步展开。
1. 基本原则(1)事实应该与业务过程息息相关。
(2)事实应该是可计量和可观察的。
(3)事实应该能够满足系统设计的需求。
2. 事实建模的步骤(1)识别需要度量和分析的业务过程。
(2)确定需要度量的事实,并进行定义和测量。
(3)确定需要使用的维度,并与事实表建立关系。
(4)确定维度之间的关系,并进行细化。
3. 应用场景事实建模适用于需要对业务过程中的事件和活动进行度量和分析的场景,如销售分析、客户行为分析、物流分析等。
维度建模过程

维度建模过程
第⼀步:选择业务过程
1、通过对业务需求以及可⽤数据源的综合考虑,确定对哪种业务过程开展建模⼯作
2、建⽴的第⼀个维度模型应该是⼀个最有影响的模型——它应该对最紧迫的业务问题作出回答,并且对数据的抽取来说是最容易的。
第⼆步:定义粒度
注:粒度是指数据仓库的数据单位中保存数据的细化或综合程度的级别,细化程度越⾼,粒度就越⼩
1、应该先优先考虑为业务处理获取最有原⼦性的信息⽽开发维度模型。
原⼦型数据是所收集的最详细的信息,这样的数据不能再做更进⼀步的细分。
2、数据仓库⼏乎总是要求在每个维度可能得到的最低粒度上对数据进⾏表⽰的原因,并不是因为查询想看到每个低层次的⾏,⽽是因为查询希望以很精确的⽅式对细节知识进⾏抽取。
第三步:选定维度
⼀个经过仔细考虑的粒度定义确定了事实表的基本维度特性。
同时,经常也可能向事实表的基本粒度加⼊更多的维度,⽽这些附加的维度会在基本维度的每个组合值⽅⾯⾃然地取得唯⼀的值。
如果附加的维度因为导致⽣成另外的事实⾏⽽违背了这个基本的粒度定义,那么必须对粒度定义进⾏修改以适应这个维度的情景。
第四步:确定事实
确定将哪些事实放到事实表中。
粒度声明有助于稳定相关的考虑。
事实必须与粒度吻合。
在考虑可能存在的事实时,可能会发现仍然需要调整早期的粒度声明和维度选择
维度建模的优缺点:更好的应对业务变化,数据冗余多,占空间多,就是⽤空间换时间。
维度建模与关系建模的比较

维度建模与关系建模的比较徐辉强北京大学智能科学系1001213776摘要:数据仓库技术的快速发展,使得从数据库中获取信息快速高效准确。
但涉及一个能够真正支持用户进行决策分析的数据仓库,并非是一件轻而易举的事情。
这需要经历一个从实现环境到抽象模型,从抽象模型到具体实现的过程。
要完成这一过程,必须依靠各种不同的数据模型。
本文主要将介绍两种数据数据仓库建模技术实体关系建模与维度建模,并比较两者之间的关系关键词:数据仓库、实体关系建模、维度建模1、引言传统的数据库技术是以单一的数据资源,即数据库为中心,进行从事务处理、批处理到决策分析等各种类型的数据处理工作。
近年来,计算机技术正向着两个不同的方向扩展:一是广度计算;二是深度计算。
特别是数据库处理可以大致地划分为两大类:操作型处理和分析型处理(或信息型处理)。
这种分离划清了数据处理的分析型环境与操作型环境之间的界限,由原来的以单一数据库为中心的数据环境发展为一种新的体系化环境,从而导致了数据仓库技术的出现和迅速发展。
数据仓库是决策支持系统(dss)和联机分析应用数据源的结构化数据环境。
数据仓库研究和解决从数据库中获取信息的问题。
数据仓库的特征在于面向主题、集成性、稳定性和时变性。
数据仓库之父William H. Inmon在1991年出版的“Building the Data Warehouse”一书中所提出的定义被广泛接受——数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策(Decision Making Support)。
数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的,它并不是所谓的“大型数据库”。
数据仓库的方案建设的目的,是为前端查询和分析作为基础,由于有较大的冗余,所以需要的存储也较大。
常用的数据建模方法

常用的数据建模方法在数据分析和数据科学领域,数据建模是一项核心任务,它涉及将现实世界中的业务过程和数据转化为适合分析和处理的结构化形式。
常用的数据建模方法可以根据不同的需求和问题进行选择,下面介绍几种常见的数据建模方法。
1. 关系数据模型:关系数据模型是一种常用的数据建模方法,它使用关系型数据库来组织和管理数据。
关系数据模型使用表格的形式来表示实体和实体之间的关系,并使用主键和外键来建立表之间的联系。
这种模型适用于需要进行复杂查询和关联操作的场景,如企业管理系统和金融交易系统。
2. 维度建模:维度建模是一种基于维度和事实的数据建模方法。
在维度建模中,数据被组织成事实表和维度表的形式。
事实表包含了业务过程中的度量指标,而维度表则包含了描述度量指标的上下文信息。
维度建模适用于分析型应用场景,如数据仓库和商业智能系统。
3. 实体关系模型:实体关系模型是一种用于建模现实世界中实体和实体之间关系的方法。
在实体关系模型中,实体用实体类型来表示,而关系用关系类型来表示。
实体关系模型适用于需要建立实体和实体之间关系的应用场景,如社交网络和知识图谱。
4. 层次数据模型:层次数据模型是一种用于表示具有层次结构关系的数据的方法。
在层次数据模型中,数据被组织成树形结构,其中每个节点都有一个父节点和零个或多个子节点。
层次数据模型适用于需要表示层次结构的数据,如组织结构和产品分类。
5. 对象关系模型:对象关系模型是一种将面向对象和关系型数据模型相结合的方法。
在对象关系模型中,数据被视为对象的集合,每个对象具有属性和方法,并且可以通过对象之间的关系进行连接和操作。
对象关系模型适用于需要同时处理结构化和半结构化数据的应用场景,如XML数据处理和文档管理系统。
除了上述常用的数据建模方法,根据不同的需求和问题,还可以使用其他的数据建模方法,如网络数据模型、面向文档模型等。
选择合适的数据建模方法可以帮助我们更好地理解和分析数据,从而得出有价值的洞察和决策。
范式建模和维度建模的区别

范式建模和维度建模的区别不同点⾸先最⼤的不同就是企业数据仓库的模式不同,inmon是采⽤第三范式的格式,⽽kimball则采⽤了多维模型–星型模型,并且还是最低粒度的数据存储。
其次是,维度数据仓库可以被分析系统直接访问,当然这种访问⽅式毕竟在分析过程中很少使⽤。
最后就是数据集市的概念有逻辑上的区别,在kimball的架构中,数据集市有维度数据仓库的⾼亮显⽰的表的⼦集来表⽰。
有的时候,在kimball的架构中,有⼀个可变通的设计,就是在ETL的过程中加⼊ODS层,使得ODS层中能保留第三范式的⼀组表来作为ETL过程的过度。
但是这个思想,Kimball看来只是ETL的过程辅助⽽已。
最后维度建模⾃底向上,范式建模⾃顶向下相同点Kimball和Inmon是两种主流的数据仓库⽅法论,分别由 Ralph Kimbal⼤神和 Bill Inmon⼤神提出,在实际数据仓库建设中,业界往往会相互借鉴使⽤两种开发模式,这两种的相同点如下:1. 都是假设操作型系统和分析型系统是分离的;2. 数据源(操作型系统)都是众多;3. ETL整合了多种操作型系统的信息,集中到⼀个企业数据仓库。
范式建模Inmon提出的集线器的⾃上⽽下(EDW-DM)的数据仓库架构。
操作型或事务型系统的数据源,通过ETL抽取转换和加载到数据仓库的ODS层,然后通过ODS的数据建设原⼦数据的数据仓库EDW,EDW不是多维格式的,不⽅便上层应⽤做数据分析,所以需要通过汇总建设成多维格式的数据集市层。
优势:易于维护,⾼度集成;劣势:结构死板,部署周期较长⼀个符合第三范式的关系必须具有以下三个条件:1. 每个属性的值唯⼀,不具有多义性;2. 每个⾮主属性必须完全依赖于整个主键,⽽⾮主键的⼀部分;3. 每个⾮主属性不能依赖于其他关系中的属性,因为这样的话,这种属性应该归到其他关系中去。
但是由于EDW的数据是原⼦粒度的,数据量⽐较⼤,完全规范的3范式在数据的交互的时候效率⽐较低下,所以通常会根据实际情况在事实表上做⼀些冗余,减少过多的数据交互。
数据仓库建模方法论

数据仓库建模方法论数据仓库建模是指将数据仓库中的数据按照某种标准和规范进行组织和管理的过程。
数据仓库建模方法论包括了多种方法和技术,用于帮助用户理解和分析数据仓库中的数据,从而支持决策制定和业务分析。
一、维度建模方法维度建模方法是数据仓库建模的核心方法之一,它以维度为核心,将数据按照维度进行组织和管理,从而提供给用户灵活和高效的数据查询和分析能力。
1.1 星型模型星型模型是最常见和简单的维度建模方法,它将数据仓库中的事实表和多个维度表通过共享主键的方式进行关联。
事实表包含了衡量业务过程中的事件或指标,而维度表包含了用于描述和过滤事实记录的属性。
星型模型的结构清晰,易于理解和使用,适用于绝大部分的数据仓库场景。
1.2 雪花型模型雪花型模型是在星型模型的基础上进行扩展和优化的一种模型,它通过拆分维度表中的属性,将其拆分为多个维度表和子维度表,从而使得数据仓库更加灵活和高效。
雪花型模型适用于维度表中的属性比较复杂和层次结构比较多的情况。
1.3 天际线模型天际线模型是一种比较先进和复杂的维度建模方法,它通过将事实表和维度表按照一定的规则进行分组和划分,从而实现多个星型模型之间的关联。
天际线模型适用于数据仓库中包含多个相互关联的业务过程和多个不同的粒度的情况。
二、多维建模方法多维建模方法是在维度建模方法基础上进行进一步抽象和简化的一种方法,它通过创建多维数据立方体和维度层次结构来组织和管理数据。
2.1 数据立方体数据立方体是多维建模的核心概念,它将数据按照事实和维度进行组织和管理,从而提供给用户直观和高效的数据查询和分析能力。
数据立方体包含了多个维度和度量,用户可以通过选择和组合维度和度量进行数据分析和挖掘。
2.2 维度层次结构维度层次结构是多维建模的关键技术,它通过将维度进行分层和组织,从而实现维度之间的关联和上下级关系。
维度层次结构可以有效地减少数据的冗余和复杂性,提高数据仓库的查询和分析效率。
三、模式设计方法模式设计方法是在维度建模方法和多维建模方法的基础上进行进一步的抽象和规范的一种方法,它通过定义模式和规则来组织和管理数据仓库中的数据。
范式建模维度建模比较

范式建模维度建模比较范式建模维度建模一、范式建模这样的设计方式是在关系型数据库中常用的,Inmon 的范式建模法的最大优点就是从关系型数据库的角度出发,结合了业务系统的数据模型,能够比较方便的实现数据仓库的建模。
1.1 范式化模型设计需满足下面三大范式:1.1.1 第一范式(1NF): 原子性字段不可再分, 否则就不是关系数据库;1.1.2 第二范式(2NF): 唯一性一个表只说明一个事物;1.1.3 第三范式(3NF): 每列都与主键有直接关系,不存在传递依赖;1.2 特点:同一份数据只存放在一个地方,因此只能从一个地方获取,没有数据冗余,保证了数据一致性;解耦(系统级与业务级),方便维护;设计思路自上而下,适合上游基础数据存储,同一份数据只存储一份,没有数据冗余,方便解耦,易维护,缺点是开发周期一般比较长,维护成本高;二、维度建模维度建模是一种将数据结构化的逻辑设计方法,它将客观世界划分为度量和上下文。
度量是常常是以数值形式出现,事实周围有上下文包围着,这种上下文被直观地分成独立的逻辑块,称之为维度。
维度建模是面向分析,为了提高查询性能可以增加数据冗余,反规范化的设计技术。
2.1 特点:模型结构简单,星型模型为主开发周期短,能够快速迭代维护成本较高维度建模是面向分析,为了提高查询性能可以增加数据冗余,反规范化的设计技术设计思路是自下而上总,开,适合统计多层次维度的汇,适合下游应用数据存储高发周期短,缺点是维护成本1.3 维度建模的常见模式1.1.4 星形模式星形模式(Star Schema) 是最常用的维度建模方式,下图展示了使用星形模式:构进行维度建模的关系结维度 C 维度 BFK FK维度D FK FK 维度 A事实表FK FK维度E ??.可以看出,星形模式的维度建模由一个事实表和一组维表成,且具有以下特点:a. 维表只和事实表关联,维表之间没有关联;b. 每个维表的主码为单列,且该主码放置在事实表中,作为两边连接的外码;c. 以事实表为核心,维表围绕核心呈星形分布;1.1.5 雪花模式接外连雪花模式(Snowflake Schema) 是对星形模式的扩展,每个维表可继续向:构多个子维表。
维度建模方法

星形模型
Product Table
Product_id Product_disc,...
Store Table
Store_id District_id,...
Central fact table
Sales Fact Table
Product_id Store_id Item_id Day_id Sales_amount Sales_units, ...
• 支持对数据仓库中数据的理解 例如:结构、粒度层次、分片策略、索引等
元数据的分类
• 技术元数据 ➢ 是数据仓库的设计和管理人员用于开发和日常管理数据 仓库是用的数据。包括:数据源信息;数据转换的描述; 数据仓库内对象和数据结构的定义;数据清理和数据更 新时用的规则;源数据到目的数据的映射;用户访问权 限,数据备份历史记录,数据导入历史记录,信息发布 历史记录等。
District Table
District_id District_desc
Time Table
Week_id Period_id Year_id
Item Table
Item_id Item_desc Dept_id
Dept Table
Dept_id Dept_desc Mgr_id
Mgr Table
• 商业元数据 ➢ 从商业业务的角度描述了数据仓库中的数据。包括:业 务主题的描述,包含的数据、查询、报表;[业务的关 注点,比如销售量,客户购买情况]
维度建模方法
维度建模
➢ 维度建模的相关概念 ➢ 维度建模的基本步骤
多维数据模型
• 直观的表示现实中的复杂关系 • 基本组成
➢维 ➢ 度量(变量、指标) ➢ 立方体
多维数据模型的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
维度建模的基本概念及过程摘要:本文首先介绍维度模型中的维度表和事实表这2个基本构成要素的基础知识;其次,介绍设计维度模型的4个基本步骤;再次,围绕某银行为实现业务价值链数据集成的需要,介绍多维体系结构中的3个关键性概念:数据仓库总线结构、一致性维度、一致性事实。
关键词:维度表;事实表;维度模型设计过程;数据仓库总线结构;一致性维度;一致性事实。
引言: 与流行的说法不同,Ralph Kimball本人并没有定义“维度”和“事实”这样的术语。
术语“维度”与“事实”,最初是20世纪60年代在一个由General Mills与Dartmouth大学主持的联合研究计划中提出的。
70年代,AC Nielsen和IRI都一致地使用这些术语描述他们的数据发布应用,用现在更为准确的话来说,就是关于零售数据的维度数据集市(Data Mart)。
在简明性成为生活方式的潮流之前的长时期内,早期的数据库垄断组织们致力于将这些概念用来简化用做分析的信息。
他们意识到,除非数据库做得简单易用,否则没有人会用它。
因此,在将可理解性和性能作为最高目标的驱动下,产生了维度模型的构造思想。
1 维度表和事实表1.1 事实表事实表是维度模型的基本表,其中如图所示存放有大量的业务性能度量值。
力图将从一个业务处理过程得到的度量值数据存放在单个数据集市。
由于度量值数据压倒性地成为任何数据集市的最大部分,因此应该避免在企业范围内的不同地方存储其拷贝。
用术语“事实”代表一个业务度量值。
可以设想一个作为例子的情形:查询某个客户在某个机构下某个产品合约账户的某个币种的某个时点余额,在各维度值(客户、产品合约、账户、机构、币种、日期)的交点处就可以得到一个度量值。
维度值的列表给出了事实表的粒度定义,并确定出度量值的取值范围是什么。
事实表的一行对应一个度量值,一个度量值就是事实表的一行;事实表的所有度量值必须具有相同的粒度。
最有用的事实是诸如账户余额这样的数字类型为可做加法的事实。
可加性是至关重要的,因为数据仓库应用不仅仅只检索事实表的单行数据。
相反,往往一次性带回数百、数千乃至数百万行的事实,并且处理这么多行的最有用的事就是将它们加起来。
当然,有些事实是半加性质的,而另外一些是非加性质的。
半加性事实仅仅沿某些维度相加,例如销售占比,周期余额;而非加性事实根本就不能相加,例如状态。
对于非加性事实,如果希望对行进行总结就不得不使用计数或平均数,或者降为一次一行地打印出全部事实行。
度量事实在理论上讲可以是文本形式的,不过这种情况很少出现。
在大多数情况下,文本度量值可以是某种事物的描述并取自某个离散列表的值。
设计者应该尽各种努力将文本度量值转换成维度,原因在于维度能够与其他文本维度属性更有效地关联起来,并且消耗少得多的空间。
不能将冗余的文本信息存放在事实表内。
除非文本对于事实表的每行来说都是唯一的,否则它应该归属到维度表中。
真正的文本事实在数据仓库中是很少出现的,文本事实具有像自由文本内容那样的不可预见性内容,这几乎是不可能进行分析的。
所有事实表有两个或者两个以上的外关键字(如图中FK符号标记的部分),外关键字用于连接到维度表的主关键字。
例如,事实表中的“产品合约关键字”总是匹配产品合约维度表的一个特定“产品合约关键字”。
如果事实表中的所有关键字都能分别与对应维度表中的主关键字正确匹配,就可以说这些表满足引用完整性的要求。
事实表要通过与之相连的维度表进行存取。
事实表根据粒度的角色划分不同,可分为事务事实表、周期快照事实表、累积快照事实表。
事务事实表用于承载事务数据,通常粒度比较低,例如产品交易事务事实、ATM交易事务事实;周期快照事实表用来记录有规律的、固定时间间隔的业务累计数据,通常粒度比较高,例如账户月平均余额事实表;累积快照事实表用来记录具有时间跨度的业务处理过程的整个过程的信息,通常这类事实表比较少见。
这里需要值得注意的是,在事实表的设计时,一定要注意一个事实表只能有一个粒度,不能将不同粒度的事实建立在同一张事实表中。
1.2 维度表维度表是事实表不可分割的部分。
如图所示,维度表包含有业务的文字描述。
在一个设计合理的维度模型中,维度表有许多列或者属性,这些属性给出对维度表的行所进行的描述。
应该尽可能多地包括一些富有意义的文字性描述。
对于维度表来说,包含50到100个属性的情形并不少见。
维度表倾向于将行数做得相当少(通常少于100万行),而将列数做得特别大。
每个维度用单一的主关键字(如图中PK符号标记的部分)进行定义,主关键字是确保同一与之相连的任何事实表之间存在引用完整性的基础。
维度属性是查询约束条件、成组与报表标签生成的基本来源。
在查询与报表请求中,属性用by这个单词进行标识。
例如,一个用户表示要按“产品合约编号”与“机构编号”来查看账户余额,那么“产品合约编号”与“机构编号”就必须是可用的维度属性。
维度表属性在数据仓库中承担着一个重大的角色。
由于它们实际上是所有令人感兴趣的约束条件与报表标签的来源,因此成为使数据仓库变得易学易用的关键。
在许多方面,数据仓库不过是维度属性的体现而已。
数据仓库的能力直接与维度属性的质量和深度成正比。
在提供详细的业务用语属性方面所花的时间越多,数据仓库就越好。
在属性列值的给定方面所花的时间越多,数据仓库就越好。
在保证属性列值的质量方面所花的时间越多,数据仓库就越好。
维度表是进入事实表的入口。
丰富的维度属性给出了丰富的分析切割能力。
维度给用户提供了使用数据仓库的接口。
最好的属性是文本的和离散的。
属性应该是真正的文字而不应是一些编码简写符号。
应该通过用更为详细的文本属性取代编码,力求最大限度地减少编码在维度表中的使用。
有时候在设计数据库时并不能很确定,从数据源析取出的一个数字型数据字段到底应该作为事实还是维度属性看待。
通常可以这样来做出决定,即看字段是一个含有许多的取值并参与运算的度量值(当事实看待),还是一个多少变化不多并参与作为约束条件的离散取值的描述(当维属性看待)。
在维度类型中,有一种重要的维度称作为退化维度(Degenerate Dimension),这种维度指的是直接把一些简单的维度放在事实表中而不专门去做一个维度表。
退化维度是维度建模领域中的一个非常重要的概念,它对理解维度建模有着非常重要的作用,退化维度经常会和其他一些维度一起组合成事实表的主键。
退化维度在分析中可以用来做分组使用。
1.3 维度表和事实表的融合在理解了事实和维度表之后,现在就考虑将两个组块一起融合到维度模型中去的问题。
如图所示,由数字型度量值组成的事实表连接到一组填满描述属性的维度表——这个星型特征结构通常被叫做星型连接方案。
该术语可以追溯到最早的关系数据库时期。
关于其中用到的维度方案,应该注意的第一件事就是其简明性与对称性。
很显然,业务用户会因为数据容易理解和浏览而从简明性方面受益。
维度模型的简明性也带来了性能上的好处。
数据库优化器可以更高效率地处理这些连接关系较少的简单方案。
数据库引擎可以采取的非常强劲的做法是,首先集中对建立了充足的索引的维度表进行约束(过滤)处理,然后用满足用户约束条件的维度表关键字的笛卡尔乘积一次性处理全部的事实表。
令人惊奇的是,利用这种方法只需使用一次事实表的索引,就可以算出与事实表之间的任意n种连接结果。
最后,维度模型能够很自然地进行扩展以适应变化的需要。
维度模型的可预定框架能够经受住无法预见的用户行为变化所带来的考验。
每个维度都是平等的,所有维度都是进入事实表的对等入口。
这个逻辑模型不存在内置的关于某种期望的查询形式方面的偏向,不存在这个月要问的业务问题相对于下个月来说具有优先方面的考虑。
没有谁会希望,如果业务用户采用新的方式进行业务分析,就要调整设计方案这样的事情发生。
最佳粒度或者原子数据具有最佳的维度。
被聚合起来的原子数据是最有表现力的数据。
原子数据应该成为每个事实表设计的基础,从而经受住业务用户无法预见的查询所引起的特别攻击。
对于维度模型来说,完全可以向方案中加入新的维度,只要其值对于每个现有的事实行存在唯一性定义就行。
同样,可以向事实表加入新的不曾预料到的事实,只要其详细程度与现有事实表处在一致的水平面上就可以了。
可以用新的不曾预料到的属性补充先前存在的维度表,也可以从某个前向时间点的角度在一个更低的粒度层面上对现存维度行进行分解。
在每种情况下,可以简单地在表中加入新的数据行或者执行一条SQL ALTER TABLE命令来对现存表格进行适当的修改。
数据用不着重新加载,所有现存的数据存取应用可以继续运行而不会产生不同的结果。
2 维度建模设计过程本文按照图具有一定顺序的四个步骤的方式进行维度数据库的设计。
2.1 第一步选取业务处理业务处理过程是机构中进行的一般都由源系统提供支持的自然业务活动。
听取用户的意见是选取业务处理过程的效率最高的方式。
在选取业务阶段,数据模型设计者需要具有全局和发展的视角,应该理解整体业务流程的基础上,从全局角度选取业务处理。
要记住的重要一点是,这里谈到的业务处理过程并不是指业务部门或者职能。
通过将注意力集中放在业务处理过程方面,而不是业务部门方面,就能在机构范围内更加经济地提交一致的数据。
如果建立的维度模型是同部门捆绑在一起的,就无法避免出现具有不同标记与术语的数据拷贝的可能性。
多重数据流向单独的维度模型,会使用户在应付不一致性的问题方面显得很脆弱。
确保一致性的最佳办法是对数据进行一次性地发布。
单一的发布过程还能减少ETL的开发量,以及后续数据管理与磁盘存储方面的负担。
2.2 第二步定义粒度粒度定义意味着对各事实表行实际代表的内容给出明确的说明。
粒度传递了同事实表度量值相联系的细节所达到的程度方面的信息。
它给出了后面这个问题的答案:“如何描述事实表的单个行?”。
粒度定义是不容轻视的至关重要的步骤。
在定义粒度时应优先考虑为业务处理获取最有原子性的信息而开发维度模型。
原子型数据是所收集的最详细的信息,这样的数据不能再做更进一步的细分。
通过在最低层面上装配数据,大多原子粒度在具有多个前端的应用场合显示出其价值所在。
原子型数据是高度维结构化的。
事实度量值越细微并具有原子性,就越能够确切地知道更多的事情,所有那些确切知道的事情都转换为维度。
在这点上,原子型数据可以说是维度方法的一个极佳匹配。
原子型数据可为分析方面提供最大限度的灵活性,因为它可以接受任何可能形式的约束,并可以以任何可能的形式出现。
维度模型的细节性数据是稳如泰山的,并随时准备接受业务用户的特殊攻击。
当然,可以总是给业务处理定义较高层面的粒度,这种粒度表示最具有原子性的数据的聚集。
不过,只要选取较高层面的粒度,就意味着将自己限制到更少或者细节性可能更小的维度上了。
具有较少粒度性的模型容易直接遭到深入到细节内容的不可预见的用户请求的攻击。