计算机应用
COMPUTER APPLICATIONS
1999年 第19卷 第9期 Vol.19 No.9 1999



数据仓库数据模型的设计
张玉芳　熊忠阳
　　摘　要　本文首先就数据仓库与传统关系数据库作了一个简单比较，然后介绍了一种适合于数据仓库设计的方法。
　　关键词　数据仓库，数据模型，数据库设计
DESIGNING THE DATA WAREHOUSE
Zhang Yufang　Xiong Zhongyang
College of Computer Science and Engineering , Chongqing University, Chongqing 400044
　　Abstract　This paper first compares data warehouse with traditional relation database,then introduces a method for designing data warehouse.
　　Keywords　Data warehouse, Data model, Database design
1　传统数据库与数据仓库的比较
　　传统的关系数据库RDB遵循一致的关系模型，其中的数据（记录）以表格的方式存储，并且能用统一的SQL语言进行数据访问，因此它的应用常被称为联机事务处理OLTP（On-Line Transaction Process）。其重点在于完成事务处理，在瞬间的时间里给予用户响应。关系数据库能够处理大型数据库，但不能将其简单地堆积就直接作为数据仓库进行使用。
　　数据库主要操作对象是多维数据，因此也称为多维数据库。多维数据库的情形正好相反，其数据以阵列方式存储，既没有统一的规律可遵循，也没有统一的多维模型可遵循，更没有统一的存取数据语言或编程语言接口（API）可利用，多维数据库只能按其所属类别进行归类。对于应用来说，多维数据库应该具备极强的查询能力，因此与关系数据库相比，多维数据库中存储的信息多而广，但由于其完成的是一种联机分析处理OLAP（On-Line Analysis Process），因此不追求瞬间响应时间，在有限的时间里给予响应即被认可。实际上，OLAP包含交互式的数据查询，伴随着多种分析方法，例如下钻（drill-down）式成功地钻入到最底层的细节信息上。因此数据仓库中的信息尽管是多维的，它仍然可以用形象化的表格表示。
　　表1给出了传统数据库存储的数据与数据仓库存储的数据之间的区别。
表1　数据仓库与数据库中数据的比较

比较内容 操作数据仓库数据
存在时间生存期短，经常变化长期存在，相对静态
存取结果记录层的存取需求以聚集方式的集合存取，因此比RDB友好
存取方式反复的事务存取模式定期地报告式的特定查询
修改方式实时修改周期性地大批量修改装入
驱动方式事件驱动：过程产生数据数据驱动：数据支配过程
操作读写操作只读
规模几个GB可达100GB+

　　尽管数据仓库与传统数据库之间存在着如此大的差异，但我们设计数据仓库并不是完全另起炉灶，而是利用现有的传统操作数据，从中进行信息的集成，从而构造出满足不同需求的数据仓库。即数据从动态的、当前事件驱动的传统操作数据流向静态的、历史数据的数据仓库。从理论上说：从操作数据中策略性地引入到期的数据可以完成这个转变，但是由于受到实际存储容量和技术的限制，实际上是不可能的，而必须从操作数据中分离和提取数据进入数据仓库。
　　鉴于以上各种因素，为保证OLTP的性能，必须将数据仓库与传统操作数据相分离，为了获得数据仓库中的数据，首先必须进行数据仓库的设计。
2　数据仓库的设计
　　本文介绍的是面向主题的自顶而下的设计方法，其实面向主题就是面向对象。数据仓库包含的对象可以是：客户、产品、策略等多维概念。终端用户通过各种维度来获取商业数据，其中时间是最基本、最关键的维度。数据仓库的设计方法同传统的数据库设计一样经历了概念模型设计、逻辑模型设计和物理模型设计三个阶段，对于面向主题的数据仓库，分别对应数据仓库中的信息包图设计、星型图模型设计和物理数据模型设计。表2给出了数据仓库和数据库开发过程中建立数据模型各阶段采用的设计方法。
表2　数据仓库与数据库各阶段的设计方法

设计阶段数据仓库数据库
概念模型信息包图数据流程图
逻辑模型星形图模型实体关联图
物理模型物理数据模型物理数据模型

　　下面分别介绍数据仓库三个模型设计阶段采用的各种技术。
2.1　概念模型设计――信息包图
　　概念模型设计也就是通常所说的需求分析，在与用户交流的过程中，确定数据仓库所需要访问的信息，这些信息包括当前、将来以及与历史相关的数据。在需求分析阶段确定操作数据、数据源以及一些附加数据，设计容易理解的数据模型，有效地完成查询和数据之间的映射。
　　由于数据仓库的多维性，利用传统的数据流程图进行需求分析已不能满足需要。超立方体（hypercube）用超出三维的表示来描述一个对象，显然具备多维特性，完全可以满足数据仓库的多维特性。利用自上而下方法设计一个超立方体的步骤为：
　　确定模型中需要抓住的商业过程，例如销售活动或销售过程；
　　确定需要捕获的值，例如销售数量或成本，这些信息通常是一些数值；
　　确定数据的粒度，亦即需要捕获的最低一级的详细信息。
　　由于超立方体在表现上缺乏直观性，尤其当维度超出三维后，数据的采集和表示都比较困难，因此我们可以采用一种称为信息包图的方法在平面上展开超立方体，即用二维表格反映多维特征。信息包图提供了一个多维空间建立用户信息模型的方法，它提供了超立方体的可视化表示。
　　信息包图拥有三个重要对象：指标、维度和类别。指标表明在维度空间衡量商务信息的一种方法，而类别是在一个维度内为了提供详细分类而定义的，其中的成员是为了辨别和区分特定数据而设。信息包图集中在用户对信息包的需要，它定义主题内容和主要性能测试指标之间的关系，其目标就是满足用户需要。利用信息包图设计概念模型需要确定三大内容：
　　. 确定指标。指标是访问数据仓库的关键所在，是用户最关心的信息。成功的信息包可以保证用户从信息包中获取需要的各个性能指标参数。
　　. 确定维度。维度提供了用户访问数据仓库信息的途径，对应超立方体的每一面，位于信息包图的第一行的每一个栏目中。
　　. 确定类别。类别表示一个维度包含的详细信息，一个维度内最底层的可用的分类又称为详细类别。
　　从上所述可以看出：在一张平面表格上描述了元素的多维性，其中的每一个维度用平面表格的某列表示，通常的维度是：时间、地点、产品和顾客，而细化本列的对象就是类别，例如时间维度的类别可以细化到年、月、日，甚至小时。平面表格中的一个元素（对应超立方体中的一个单元格）可以表示：某年某月份，在某商店的某类产品的销售额。创建信息包图时需要确定最高层和最低层的信息需求，以便最终设计出包含各个层次需要的数据仓库。
　　对于复杂的商业要求进行需求分析时，有时一张信息包图不能反映所有情况，可能需要设计不同的信息包图来满足全部需求，此时应该保证多个信息包图中出现的维度信息和类别信息完全一致。
2.2　逻辑模型设计――星形图设计
　　在传统的数据库逻辑模型设计中，根据需求分析阶段获得的数据流程图，利用实体关联方法将概念模型转换为实体关联E―R图。从前所述数据仓库的需求分析阶段获得的是信息包图，同时数据仓库主要提供的是查询操作，而最便于执行查询操作的逻辑模型设计工具是星形图，因此可以利用星形图来设计数据仓库的逻辑模型。
　　星形图因其外观似五角星而得名，它支持以商务决策者的观点定义数据实体，满足面向主题数据仓库设计的需要，而信息包图又为星形图的设计提供了完备的概念基础。同信息包图中的三个对象对应，星形图拥有三个逻辑实体：维度、指标和类别。
　　位于星形图中心的实体是指标实体，对应信息包图中的指标对象，是用户最关心的基本实体和查询活动的中心，为用户的商务活动提供定量数据。每个指标实体代表一系列相关事实，完成一项指定的功能，在一般情况下代表一个现实事务的综合水平，仅仅与每个相关维度的一个点对应。位于星形图星角上的实体是维度实体，对应信息包图中的维度对象，其作用是限制用户的查询结果，将数据过滤使得从指标实体查询返回较少的行，从而缩小访问范围。另外一个实体是详细类别实体，它对应信息包图中的类别对象。一个维度内的每个单元就是一个类别，代表该维度内的一个单独层次，要求更加详细的信息才能满足用户的需要，与对应的事务数据库结构产生映射。
　　从概念模型――信息包图转换成逻辑模型――星形图，需要确定三大实体:
　　. 定义指标实体。使用每一个指标，同时确定是否存储经过计算的指标。
　　. 定义维度实体。一个维度实体对应指标实体中的多个指标。用户利用维度实体来访问指标实体，其实质对应着逻辑数据实体，一个维度实体对应信息包图中的一个列。
　　. 定义详细类别实体。对应现实世界的某一实体。
　　在星形图中，用户通过维度实体获得指标实体数据，其中指标实体与维度实体间的联系通过每个维度中的最低一层的详细类别实体连接。
　　当多个信息包图转换成星形图时，可能出现维度实体的交叉重叠，为了保证实体的一致性需要进行统一处理，确定它们是同一实体在不同层次上的数据反映，还是两个不同的实体。当多个维度实体相关并且存在共性时，可能需要将其合并为一个指标实体。
2.3　数据库物理模型设计――星形图转换为数据模型
　　从逻辑模型――星形图转向物理模型设计，完全遵循传统的数据库设计方法。一般来说，星形图中的指标实体和详细类别实体通常转变为一个具体的物理数据库表，而维度实体则作为查询参考、过滤和聚合数据使用，因此通常并不直接转变为物理数据库表。在物理模型设计阶段，需要确定以下内容:
　　定义数据标准，规范化数据仓库中的各种数据;
　　定义实体和实体特征，完整定义实体所具有的一切属性;
　　定义规模，确定数据容量和更新频率。
　　在物理模型设计阶段，可以利用自动定义工具如：Sdesigner，PowerDesigner进行数据管理，获得该阶段完整的文档资料。
3　小结
　　随着信息技术突飞猛进地发展，如何存储、管理、维护和使用信息变得越来越重要，因此数据仓库的建设就显得越来越必要。本文介绍了一种面向对象的数据仓库设计方法，在数据仓库的不同设计阶段，围绕面向主题的数据仓库，与传统数据库设计阶段相对应，介绍了各阶段的具体设计方法。
作者简介：张玉芳　讲师，在职博士研究生。主要从事计算机网络和数据库应用技术等领域的研究和教学工作。
熊忠阳　副研究员。主要从事网络信息系统和并行技术等方面的研究工作。
作者单位：重庆大学计算机科学与工程学院　重庆（400044）
参考文献
［1］　Tom Hammergren，著. 数据仓库技术.北京：中国水力水电出版社，1998,2 
收稿日期:1999-03-12(修改稿)
