��因此针对企业或政府部门的具体需求,建立一个数据仓库的过程步骤如下:
第一步:启动工程
����◎ 确定工程目标
����◎ 制定工程计划

第二步:建立开发、运行环境
����◎ 选择实现数据仓库的软件资源
����◎ 选择实现数据仓库的硬件资源

第三步:确定主题进行数据建模
��根据决策需求确定主题,建立数据模型。数据模型表示了企业的信息需求,数据模型的建立是不考虑技术因素的。一个数据模型至少要能说明下列主要内容:
����◎ 企业的主题;
����◎ 主题之间的关系;
����◎ 足以代表主题的关键字和属性、主题领域之间的连接属性、属性之间的关系等等。
从理论上讲,没有数据模型就建立数据仓库也是可能的,但不管怎么样,在实践中从不这样做。没有数据模型而试图建立数据仓库就好比让一个没有拿任何地图的人到世界各地旅行一样。总之,建立或获得数据模型是建立数据仓库的起点。

第四步:选择数据源
��数据源是根据企业已有系统确定的,是准备为未来的数据仓库提供数据的。通常,企业已有系统是比较杂乱的,因此就要用数据模型作为基准来确定什么是"最好的"数据。换句话说,数据设计人员以数据模型为起点并问手头上哪些数据最好地满足了数据模型所标识的数据需求。一般来说表示数据模型的"最好的"数据应当是:
����◎ 最完整的;
����◎ 最及时的;
����◎ 最准确的;
����◎ 最接近外部数据源的;
����◎ 最结构化兼容的。

第五步:设计数据仓库的结构

����◎ 对数据仓库的数据组织进行逻辑结构设计
����◎ 对数据仓库的数据组织进行物理结构设计
如果基于多维数据库,就要根据多维数据模型设计多维数据结构的维和度量属性;如果是基于关系数据库就要根据星型模式设计多维数据结构的事实表和维表。

第六步:设计并建立接口
��数据仓库设计好之后,下一步就是设计并建立已有系统中的数据源和数据仓库之间的接口,这些接口在数据仓库中占有一席之地。虽然接口只是以"抽取"的形式表现的,但是在抽取的过程中还有很多事情需要做:
����◎ 来自已有系统和面向应用环境的数据集成,包括解决语义冲突、消除噪音等等;
����◎ 数据的时间基准的转化;
����◎ 数据精简和清洗(净化);
����◎ 数据综合;
����◎ 如何对已有系统进行有效的扫描。
W. H. Inmon认为建立一个数据仓库所需要的大量开发资源都消耗在接口的设计和建立上,大约占总资源的80%左右。

第七步:管理元数据
��根据上述各步定义数据仓库的元数据,元数据用于存储和定义:
����◎ 数据模型;
����◎ 源数据结构;
����◎ 映射及转换规则;
����◎ 综合数据的算法
����◎ 数据仓库结构;
����◎ 控制信息;
����◎ 以及缺省值、安全要求、数据时限等方面。

第八步:移植数据
��一旦接口程序完成之后,下一步就是将数据从数据源移植到数据仓库中。移植的过程也是渐近的,首先是将数据仓库的一个主题领域的数据移植过来,也就是说把数据仓库所需数据的一小部分移植过来,这样做的好处是对数据进行改造时可以轻松、快速地完成。而一下子就移植大量数据极大地削弱了数据仓库的灵活性。

第九步:开发数据分析工具
��数据分析工具用于完成实际决策问题所需的各种查询检索工具、多维数据的OLAP分析工具、数据挖掘DM工具等,以实现决策支持系统DSS的各种要求,满足用户的需要。

第十步:反馈循环
��数据仓库是基于企业已有系统建立起来的,最终用户利用数据仓库作为分析的基础,并将其发现的问题反馈给数据设计人员,由数据设计人员来做相应的调整。这个过程需要反复多次。

第十一步:管理数据仓库环境

��必须像对其他系统一样对数据仓库进行有效地管理,包括安全、质量等方面;对建立在数据仓库基础之上的分析工具也要进行管理,并定期进行数据更新,即数据加载,使数据仓库能正常运行。
��那么我们如何进行数据仓库的数据加载呢?根据已有的文献介绍,数据加载的策略一般有以下三种:
��⑴�即时加载:是指当对数据源进行更新操作时立即更新数据仓库中相关的数据,如某些实体化视图。即时加载能够使数据仓库上的操作结果精确。但是如果数据源经常进行更新操作,即时加载方法会降低整个系统的效率。这种方法可以通过触发器来实现,实际当中一般不采用这种方法加载数据。
��⑵�延迟加载:是指数据源更新与数据仓库维护由不同的事务完成,数据仓库维护延迟到它被操作时完成。延迟加载避免了频繁更新,但有时也严重影响系统的性能,且操作结果精确度较低。虽然也可通过触发器来实现,但实际当中也很少用。
��⑶�快照方法:是指数据仓库由一个异步进程定期(一周一次或一月一次,由具体的应用需求来决定)进行维护。这种方法被广泛采纳,且一般是采用脱机批处理的方式来实现。

��虽然我们以一步一步的形式给出了建立数据仓库的过程,实际上在构建数据仓库时主要考虑以下几个问题:
��⑴�何时以及如何收集源数据中的数据?
��⑵�采用什么样的模式构建数据仓库?
��⑶�如何传播源数据中的数据更新?
��⑷�在数据仓库中汇总什么样的数据以及如何汇总?