一般的数据库是一个操作型的数据存储工具,比如一个学校的选课系统的数据库,学生选课系统由教务处建设和管理,主要用于课程的排课和学生的选课,教务处人员可以在选课系统中增加、修改、删除和查询排课信息,学生也可以在选课系统中对选课信息进行操作。由于该数据库面向的是选课,所以记录的是与课程安排与选课的信息,其数据库模型简化如下图所示:
与一般操作型的数据库不同的是数据仓库主要是面向查询操作,而且查询的数据来自于多个数据库系统。同样以一个学校为例,学校除了选课系统以外还有人力资源系统(HR系统)用于管理教师信息、学籍管理系统管理学生的学籍信息等。
HR系统是由人事处建设和管理的,主要保存与教师相关的信息,所以该系统中不会出现学生的信息,其系统数据库模型如下图所示:
学籍管理系统是由学生处建设和管理,数据库中保存了学生的学历、毕业去向、家庭情况等基本信息外还保存了学生每学期的考试成绩等信息。由于该系统关注的是学生,所以不会出现教师的信息,其系统数据库模型如下图所示:
由于不同的系统由不同的部门和人员建设和管理,保存了不同的信息,如果需要进行数据的联合查询,而查询的数据又存放在不同的数据库中,那么就需要将这3个系统数据库的信息集成在一起,放在一个数据模型中,形成数据仓库,以便对教师信息、学生信息和选课信息进行联合的查询,建立的数据仓库模型如下图所示:
例如要查询一次教师的培训是否对教师所教学生的成绩有影响,以便决定是否对教师进行下一步的培训,则只能在数据仓库中才能完成,因为教师的培训信息和学生的成绩是存放在不同的系统中,相互独立,查询单独的一个数据库是没办法完成的。
数据仓库与一般数据库比较,还有一个特点是记录了数据变更历史。在数据库中对数据进行的修改一般是直接在数据行上进行更新操作,所以只记录最新的数据结果,而数据仓库则会记录每天数据的变动情况,将变动之前的数据和变动后的数据都保存在数据仓库中,以便进行时间序列分析。
同样以学校的3个数据库和数据仓库为例,在HR系统中记录了每个教师的基本信息,其中一项是教师的职称。教师职称变动时只需在HR数据库中修改该教师的职称字段即可。如果要查询一个教授从刚开始的讲师到现在的教授不同的职称情况下所教学生的平均成绩情况,则需要从数据仓库中查出该教师每次职称变动的时间,然后统计每个时间段内该教师所教课程所教学生的平均成绩即可得出结果,而这个查询在HR数据库是没办法实现的。