书城教材教辅管理信息系统原理
11685300000020

第20章 数据库与数据仓库(3)

第一范式是基本的,但存在一些问题。现在来分析下面的教师登记表(表44),它是非规范形式所示的关系,但它符合第一范式。表的内容是实际问题的简化,姓名这一项代表了教师的姓名、年龄、性别、住址等一系列基本情况信息,毕业时间代表了与该教师学历有关的毕业学校、专业等信息。假定教师编号是每个教师的唯一标识,而工资完全由级别所确定,那么在这个表中各个数据项(即属性)之间有如图412所示的相互依赖。

表44教师登记表

教师编号姓名级别工资/元学历毕业时间/年

00001张一副教授2000硕士1999

00001张一副教授2000学士1995

00002王二讲师1500学士1995

00003李三助教1000学士2001

图412教师登记表中各数据项之间的关系

这表明:姓名、级别、工资依赖于教师编号确定其值,而学历要由教师编号和毕业时间两个属性唯一确定。因而,在这个关系中不能用一个属性作为主属性构成主关键字,以使其他非主属性完全依赖于它而确定。

按此关系所建的数据库有以下几个缺点。

①冗余度高。如张一这个教师的名字等基本信息由于他有两个学历而要存储两次,浪费了存储空间。

②维护困难。这种关系对于数据的修改、删除、插入等操作都十分不方便,如张一的记录要删除就要两个同时删除。

③容易造成数据的矛盾。由于维护操作的不便,许多数据的多次存储稍有疏忽就会使同一数据在数据库中的结果不同,同一个张一可能具有不同的工资,这就造成了数据库的矛盾性。

所以,第一范式的关系必须进一步规范化为第二范式(2NF)。

(2)第二范式(2NF)

从第一范式中分解出新的关系,使每个关系里都可确定一个或几个属性作为关系的主关键字,使该关系中的其他属性都完全依赖于它而定,从而消去非主属性对主关键字的不完全依赖性,所得的关系称为第二范式的关系。

对于表44,只要拆开为表45(a)、表45(b)两个关系就能达到目的。

表45(a)

教师编号姓名级别工资/元

00001张一副教授2000

00002王二讲师1500

00003李三助教1000

表45(b)

教师编号学历毕业时间/年

00001硕士1999

00001学士1995

00002学士1995

00003学士2001

表45(a)的关系中主关键字是教师编号这一主属性,表45(b)的关系里主关键字由教师编号、毕业时间两个主属性共同构成,这两个关系里所有非主属性都完全依赖于主关键字,因而均是第二范式的关系。

第二范式仍然会造成一些麻烦。看表45(a)这个关系:实际上可能很多人的级别都是副教授,那么他们的工资应当也都是2000元,如果现在要把副教授的工资改为2500元,那么副教授的工资都要修改,有一个人改错了,就会造成同一级别工资不一样的错误,因而这种关系也有数据冗余,容易造成数据矛盾等问题,其原因就在于这些属性间存在着如下一种传递依赖关系,即

教师编号→级别级别→工资

从而使

教师编号→级别→工资

也就是说,表45(a)中虽然级别与工资两个属性完全依赖于主属性教师编号,但实际上是工资直接依赖于级别,由于级别依赖于教师编号而使工资通过级别的传递作用间接依赖于教师编号这个属性。

(3)第三范式(3NF)

消去非主属性对主关键字的传递依赖性,称为第三范式。现在只要把第二范式的关系恰当地拆开为几个关系即可达目的。如表45(a)的关系,拆开为表46(a)和表46(b)两个关系,就都是第三范式了。

表46(a)

教师编号姓名级别

00001张一副教授

00002王二讲师

00003李三助教

表46(b)

级别工资/元

副教授2000

讲师1500

助教1000

下面概括以上的规范化过程:先对二维表消去组合项与重复组化为第一范式;接着消去非主属性对主关键字的不完全依赖性而变为第二范式;再消去非主属性对主关键字的传递依赖性就化为第三范式了。用第三范式的关系来定义数据库会比直接用二维表所定义的数据库好得多。关系理论中还有BCNF,它比第三范式更进了一步,是修正的第三范式,有时也称为第三范式;另外还有第四范式(4NF)和第五范式(5NF),这里就不作介绍了。

4.5数据库设计

人们在总结信息资源开发、管理和服务的各种手段时,认为最有效的是数据库技术。数据库的应用已越来越广泛,从小型的单项事务处理系统到大型的信息系统大都用先进的数据库技术来保持系统数据的整体性、完整性和共享性。

数据库设计是研制数据库及其应用系统的技术,是数据库在应用领域中主要的研究课。,,

用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。数据库设计通常是在一个通用的DBMS支持下进行的,即利用现成的DBMS为基础。

在数据库领域内,常常把使用数据库的各类系统称为数据库应用系统(DBMS)。

1.数据库设计方法简述

由于信息结构复杂,应用环境多样,在相当长的一段时期内数据库设计主要采用手工试凑法。使用这种方法与设计人员的经验和水平有直接关系,数据库设计是一种技艺而不是工程技术,缺乏科学的理论和工程原则支持,很难保持设计质量。常常是数据库投入使用后才发现问题,不得不进行修改,使维护代价昂贵。10余年来,人们努力探索,提出了各种数据库设计方法,这些方法运用软件工程的思想和方法,提出了各种设计准则和规程,都属于规范设计法。

规范设计法中比较著名的有新奥尔良(NewOrleans)方法。它将数据库设计分为4个阶段:需求分析(分析用户要求)、概念设计(信息分析和定义)、逻辑设计(设计实现)和物理设计(物理数据库设计)。其后,S.S.Yao等又将数据库设计分为5个步骤,又有I.R.Palmer等主张把数据库设计当成一步接一步的过程,并采用一些辅助手段实现每一过程。

基于ER模型的数据库设计方法、基于3NF(第三范式)的设计方法、基于抽象语法规范的设计方法等,是在数据库设计的不同阶段上支持实现的具体技术和方法。

规范设计法从本质上看仍然是手工设计方法,其基本思想是过程迭代和逐步求精。计算机辅助数据库设计,目前还是在数据库设计的某些过程中模拟某一规范设计方法,并以人的知识或经验为主导,通过人机交互实现设计中的某些部分。从目前条件来看,按照一定的设计规范,用工程化方法设计数据库是最实用的方法。

2.数据库设计步骤

按照规范设计的方法将数据库设计分为以下6个阶段(如图413所示):需求分析、概念结构设计、逻辑结构设计、数据库物理设计、数据库实施、数据库运用和维护。

这个设计步骤是从数据库应用系统设计和开发的全过程来考察数据库设计的问题的,因此它既是数据库也是应用系统的设计过程。在设计过程中努力把数据库设计和系统其他成分的设计紧密结合,把数据和处理的需求收集、分析、抽象、设计、实现在各个阶段同时进行,相互参照,相互补充,以完善两方面的设计。

(1)需求分析

需求分析的任务是对现实世界要处理的对象(组织、部门企业等)进行详细调查。调查的重点是“数据”和“处理”,通过调查获得每个信息使用者对数据库的要求。具体步骤如下。

①了解组织机构情况,为分析信息流做准备。

②了解各部门业务情况,调查各部门输入和使用的数据及处理数据的方式与算法。

③确定数据库的信息组成及计算机系统应实现的功能。

(2)概念结构设计

概念结构设计的任务是对用户的需求进行综合、归纳和抽象,产生一个独立于DBMS的概念数据模型。在概念结构设计阶段,所用的代表工具主要是ER图。构造概念数据模型时要注意的是:应充分反映现实世界中实体与实体之间的联系;满足不同用户对数据处理的要求;易于理解,可以与用户交流;易于更改;易于向关系模型转化。概念数据模型是DBMS,。

图413数据库设计步骤

(3)逻辑结构设计

逻辑结构设计的任务是将概念模型转换为某个DBMS支持的数据模型,然后再对转换后的模型进行定义描述,并对其进行优化,最终产生一个优化的数据库模式。

数据库逻辑设计的步骤主要分两步:第一步是把概念模型转换为关系模式,按一定的规则向数据模型转换;第二步是将转换得到的数据模型进行修改完善。

(4)物理结构设计

物理结构设计的任务是为逻辑结构选取最适合应用环境的物理结构,包括存储结构和存取方法。它主要依赖于给定的计算机系统。在进行物理结构设计时主要考虑数据存储和数据处理方面的问题。数据存储是确定数据库所需要存储空间的大小,以尽量减少空间占用为原则。数据处理决定操作次数的多少,应尽量减少操作次数,使相应的时间越快越好。

(5)数据库的实施

完成数据库的物理设计之后,设计人员就要用选定的DBMS提供的数据定义语言将数据库逻辑设计和物理设计的结果严格描述出来,成为DBMS可接受的源代码;再经过调试产生目标模式,然后就可以组织数据入库了。

(6)数据库的运行与维护

数据库经过试运行(录入数据、运行数据库应用程序)合格后,即可投入正式运行了。

在数据库运行阶段,对数据库经常性的维护工作主要是由DBA完成的,它包括:数据库的;、;、;

组织与重构造。

4.6数据仓库与数据挖掘

1.数据仓库

1)数据仓库的概念

数据仓库的概念是由数据仓库之父W.H.Inmon提出来的,他指出数据仓库是一个面向主题的、集成的、非易失的且随时间变化的数据集合,用来支持经营管理中的决策制定过程。数据仓库可将各种数据整合在一个中央存储库中,并重新整理和排序。一般来说,控制程序员会在非忙碌时间将数据批量转换到中央存储库,当数据被导入数据仓库后,借助OLAP等数据挖掘工具,管理者和其他用户可轻松地操作数据库并得到所需的商务数据。

2)数据仓库与数据库的区别

数据仓库的出现,并不是要取代数据库。目前,大部分数据仓库还是用关系数据库管理系统来管理的。可以说,数据库、数据仓库相辅相成、各有千秋,如表47所示,数据库是面向事务设计的,数据仓库是面向主题设计的,数据库一般存储在线交易数据,数据仓库存储的一般是历史数据;数据库设计是尽量避免冗余,一般采用符合范式的规则来设计,数据仓库在设计时有意引入冗余,采用反范式的方式来设计;数据库是为捕获数据而设计,数据仓库是为分析数据而设计的,它的两个基本元素是维表和事实表。

表47数据仓库与数据库的对比

对比内容数据库数据仓库

数据内容当前值历史的、存档的、归纳的、计算的数据数据目标面向业务操作,重复处理面向主题域、分析应用数据特性动态变化,按字段更新静态、不能直接更新,只能定时添加数据结构高度结构化、复杂,适合操作计算简单、适合分析使用频率高度结构化、复杂,适合操作计算中到低

数据访问量每个事物只访问少量记录有的事物可能需要访问大量记录对响应时间的要求以秒为单位,时间较短时间较长

3)数据仓库的特性

从数据仓库的定义可以看出数据仓库有4个重要的特点。

(1)面向主题

操作型数据库的数据组织面向事务处理任务,各个业务系统之间各自分离,而数据仓库中的数据是按照一定的主题域进行组织的。

(2)集成的

数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的,必须消除源数据中的不一致性,以保证数据仓库内的信息是关于整个企业。

(3)相对稳定的

数据仓库的数据主要供企业决策分析之用,所涉及的数据操作主要是数据查询,一旦某个数据进入数据仓库以后,一般情况下将被长期保留,也就是数据仓库中一般有大量的查询操作,但修改和删除操作很少,通常只需要定期的加载、刷新。

(4)反映历史变化

数据仓库中的数据通常包含历史信息,系统记录了企业从过去某一时点(如开始应用数据仓库的时点)到目前的各个阶段的信息,通过这些信息,可以对企业的发展历程和未来趋势作出定量分析和预测。

4)数据仓库的基本结构