FoodMart数据库是SQL Server以前版本所带的示例数据库,它模拟了一家大型的食品连锁店的经营业务所产生的数据。其商业数据保存在一个Access格式的数据库中,其中包括了客户管理数据、销售数据、分销数据和库存数据等。随着业务量的增加,这个食品连锁店的老板迫切需要多方位地掌握其经营状况,而传统的报表形式和数据处理方式已经不能满足这一要求,因此在保留历史数据的基础上构建商业智能应用已经迫在眉睫。下面就描述满足这一商务需求的技术实现过程。
2.1 设计和创建数据仓库
FoodMart数据库涉及到公司经营的各个方面,包括产品、库存、人事、客户和销售等。一个真正的商业智能应用应该对这些业务需求进行全面地考虑。本章截取这些需求中的销售部分构建商业智能。
2.1.1 原始业务数据分析
打开配套文件中附带的foodmart.mdb文件,可以看到如图2-1所示的24张表,虽然以前在设计这个数据库的时候加入了数据仓库的某些特点,但由于它本身源于以前的系统,也存储了全部的业务数据,因此这里作为初学可以把它理解为福马特商店的原始数据。
在这个数据库中,包含了福马特商店日常经营业务的数据,如人事管理中的员工信息存储在employee表中,员工所属部门信息存储在department表中,职务信息则存储在position表中,库存管理业务中的仓库类型存储在 warehouse_class表中,具体的仓库存储在warehouse中。
2.1.2 设计数据仓库逻辑模型
福马特市场部的商务需求是要对1998年进行的所有销售业务数据进行多角度分析,以便市场分析人员能在查询数据库时获取快速的响应,高层管理人员也能从总体上把握影响本年度销售的因素。这需要利用存储在公司业务数据库中的数据,建立数据仓库,进而创建可用于分析的多维数据结构。
如前所述,这里只着眼于销售方面的数据,因而把与销售相关的表提炼出来进行分析。在foodmart.mdb 数据库中,销售业务的数据和时间、促销手段、产品和店铺等都有关系,它们的关系体现在表与表之间的逻辑关系上。要从业务数据出发设计数据仓库的结构,必须明确业务数据本身的结构,而业务数据的关系一般是基于关系数据库设计的范式。数据仓库中表的关系不受关系数据库设计范式的约束,但也要遵循一定的结构规范,如星形结构和雪花形结构即是这种类型的规范。同时这也是数据仓库逻辑结构的两种类型。关于数据库和数据仓库逻辑结构设计的异同将在第3章讲解。
这里希望用雪花形结构来构建福马特商店的销售数据仓库,逻辑结构设计图如图2-2所示。
在数据仓库的逻辑结构中,数据表可以划分为两类:一类是事实数据表(简称为“事实表”),用来存储数据仓库中的实际数据,如这里存储1998年销售数据的sales_fact_1998表即为事实表;另一类是维度数据表(简称为“维度表”),用来存储数据仓库中的维度数据,如这里的关于时间、促销手段和产品等分析要素的表均为维度表。关于事实表和维度表的具体知识也在第3章学习。
注意,在本例中设计的维度表和事实表与原始数据中的表名及结构都一致,这主要是由原始数据的特点和本章作为入门章节的定位决定的。在实际设计的时候,通常需要根据需求情况重新建立与原始数据不同的表结构。这主要是由于传统业务的数据库是用来进行事务处理的(即 OLTP),而数据仓库则是用来进行分析处理的(即OLAP),用途的不同决定了其结构的不同。这一点在以后复杂的数据仓库设计中会通过示例体现出来。
2.1.3 创建foodmartsaleDW数据仓库
数据仓库也是一种数据库,其管理同样是通过数据库管理系统(DBMS)来进行的。因此数据仓库可以像普通数据库一样进行创建、修改和删除。当数据仓库的逻辑结构设计完后,就可以创建物理数据仓库了。
这时可以在SQL Server Management Studio中按照一般的建立数据库的方法建立一个名为“foodmartsaleDW”的数据库,然后把这里设计的表创建好,数据类型依据原始数据库中的各个表和字段的数据类型设置。具体操作方法可以参阅本书的姊妹篇《SQL Server 2005数据库管理与应用高手修炼指南》。但由于这里数据仓库的表结构与原始数据库中的表结构基本一致,因此,创建foodmartsaleDW数据仓库的物理结构过程也可以在ETL阶段完成。
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/