《第1章 数据库基本原理》由会员分享,可在线阅读,更多相关《第1章 数据库基本原理(73页珍藏版)》请在金锄头文库上搜索。
1、第1章数据库基本原理1.1数据库概述1.2数据模型1.3关系的完整性1.4关系模型的规范化1.1数据库概述数据库技术产生于20世纪60年代中期,几十年来得到了迅速发展。人们对信息和数据的利用和处理已进入自动化、网络化和社会化阶段,如银行储蓄、股票交易、资料查询、气象预报、机票预定等。这些任务既需要大量数据,又要求快速处理并及时得到结果,是传统的人工方法不可能完成的。飞速发展的计算机技术使上述大规模的数据处理得以实现。1.1.1数据库的产生和发展数据库(Database)这个名词起源于20世纪50年代。从目前情况看,关系数据库仍然占绝对的主导地位,并将影响着数据库技术的发展。数据库技术的发展已经
2、历了4个发展阶段:1. 人工管理数据阶段的特点 (1)数据不保存;(2)没有专用软件对数据进行管理;(3)数据不共享;(4)数据不具有独立性。2. 文件系统管理阶段的特点 (1)数据可以长期保存;(2)有专用软件对数据进行管理;(3)数据共享性差、冗余度大;(4)数据独立性差。3. 数据库系统阶段的特点(1)数据结构化;(2)数据冗余度小;(3)数据共享性好;(4)数据独立性高;(5)数据有统一管理和控制。4. 高级数据库阶段计算机辅助设计/制造(CAD/CAM)、计算机集成制造(CIM)、地理信息系统(GIS)、办公信息系统(OIS)、计算机辅助超大规模集成电路设计(VLSICAD)等都需要
3、数据库的支持。这些系统在数据类型或数据结构或数据存储方面有特殊要求,传统的数据库系统并不能支持。1.1.2 现实世界、信息世界、数据世界1. 现实世界现实世界存在着大量的事物。这些事物可以是具体的,也可以是抽象的。各个事物都有表征自己的各种特征。由于考虑问题的不同,同一个事物可能有不同的特征来描述它。每一个事物的全部特征就反映了该事物本身。每一个事物至少有一个特征。2. 信息世界人们观察各种事物,在大脑中形成抽象概念,这就是信息(Information)。信息世界就是现实世界的事物在人脑中的抽象表现。3. 数据世界数据世界就是信息世界中信息的数据化。信息和数据是紧密相关的,许多场合将它们看作同
4、义词。在数据世界里,将现实世界中诸事物凡有规律的特征都用恰当的编码表示是非常必要的。 编码的质量是影响数据库系统的决定性因素。1.1.3 数据库基本概念1. 数据数据(Data)就是描述信息的符号,是数据库中存储的基本对象。数据处理(DataProcessing)是将原始数据转换成信息的过程。2. 数据库数据库(Database,简称DB)是在计算机系统中按照一定数据模型组织、存储和应用的相互联系的数据集合。数据库技术(DatabaseTechnique)就是一种对数据进行加工以得到有用信息的计算机软件技术。3. 数据库管理系统数据库管理系统(DatabaseManagementSystem,
5、简称DBMS)是一种计算机软件系统。以数据库管理系统为核心的应用系统称为管理信息系统(ManagementInformationSystem,简称MIS)。4. 数据库系统数据库系统(DatabaseSystem,简称DBS)就是以数据库应用为基础的计算机系统。数据库系统不仅包括必须存储的数据,还包括相应的硬件、软件和各类工作人员。1.2数据模型数据库中的大量数据必须按严格的数据模型来组织。数据库中的数据是高度结构化的,它不仅反映数据本身,而且反映数据之间的关系。数据模型就是描述这种关系的数据结构形式。理想的数据模型应能满足三方面的要求:一是能比较真实地描述现实世界;二是容易被人所理解;三是便
6、于在计算机上实现。 根据模型应用的不同目的。可以将模型划分为两类,它们分属于两个不同的层次。概念模型(IdeaModel)是现实世界到信息世界的抽象,又称为信息模型。数据模型(DataModel)是信息世界到数据世界的抽象。数据库领域最常见的数据模型有4种:层次模型、网状模型、关系模型和面向对象模型。其中层次模型和网状模型统称为非关系模型。目前,关系模型是最常用的数据模型。以关系模型为基础建立的数据库管理系统称为关系数据库管理系统(RDBMS)。1.2.1数据模型的组成要素数据模型通常都是由数据结构、数据操作和完整性约束3个要素组成。1. 数据结构数据结构是所研究的对象类型(objecttyp
7、e)的集合,用于描述系统的静态特征。2. 数据操作数据操作是指数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则,用于描述系统的动态特征。3. 数据约束条件数据约束条件是一组完整性规则的集合。完整性规则是给定的数据模型中数据及其联系所具有的制约和存储规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效和相容。数据模型还应该提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件。1.2.2信息世界的主要概念1. 实体实体(Entity)就是现实世界中客观存在并可相互区分的事物。实体既可以是看得见摸得着的具体的事物
8、,也可以是抽象的概念或联系。例如,某一本书、某一架飞机、某个学生等都是实体。2. 属性实体所具有的某一特征称为属性(Attribute)。一个实体由若干个(至少一个)属性来描述。一个实体的所有属性组成实体本身。例如,学生实体可以由学号、姓名、性别、出生年月日、班级等属性组成。而(0100001、冯东梅、女、1980/12/26、01电子商务1)就是一个学生(实体)的属性值。3. 码唯一标识实体的属性组称为码(Key),通常又称为关键字。如果实体有多个码,则可以选定其中一个码为主码(PrimaryKey),通常又称为主关键字。如果实体只有一个码,它就是主码(主关键字)。例如,一个学校里,学生实体
9、的学号是肯定不重复的。所以学号可以作为学生实体的码。如果学生实体中含有身份证号属性,则身份证号也是码,可以在学号和身份证号中选定一个作为主码(主关键字)。通常情况下只关注实体的主码,所以,在不会引起混淆时,通常说码、主码、关键字或主关键字,含义都相同。4. 域属性的允许取值的集合称为该属性的域(Domain)。例如,学号的域是7位数字(某校规定),性别的域是男、女,班级的域是该校所有班级的集合。5. 实体型用实体名及其所有属性名集合来抽象和描述同类实体称为实体型(Entitytype)。例如,学生(学号、姓名、性别、出生年月日、班级)就是一个实体型。6. 实体集同型实体的集合称为实体集(Ent
10、ityset)。例如,某个学校(或某个班级)的全体学生就是一个实体集。7. 联系信息世界的不同实体集之间和同一实体集内部都可能存在一定的联系(Relationship)。数据世界的概念是和信息世界的概念相对应的:数据表(Datatable)是实体集的数据表示;记录(Record)是实体的数据表示;数据项(Item)是属性的数据表示。记录由若干数据项组成。1.2.3 实体的联系信息世界存在的联系有两种:其一是一个实体集内部的联系;其二是不同实体集之间的联系。1. 实体集内部的联系实体集内部的联系通常指组成该实体的各属性之间的联系。在表1-1中,不同实体的学号都不重复,即学号与实体间有一一对应关系
11、。学号就是学生情况这个实体集的关键字。表1-1 学生情况学 号姓 名性别出生年月日家庭所在地家庭人均月收入0100001冯东梅女1980-12-26北京1,100 0100002章 蕾女1979-02-18上海350 0100007闻维祥男1979-02-24天津450 0100008黎念真女1979-08-19重庆400 0100009钟开才男1978-08-08广东400 0100117江介敏女1978-06-08湖北600 表1-2 选课及成绩学 号课程号成绩0100001A002850100001B001920100001B022780100001C032850100001D01278
12、0100002A002900100002B001800100002B022980100002C032920100002D01289在表1-2中,不同实体的学号(或课程号、或成绩)都有可能重复。但是,不同实体的学号加课程号则不可能重复。所以,学号和课程号这两个属性组成的属性组是选课及成绩这个关系的关键字。2. 实体集之间的联系对于两个不同的实体集A和B,它们之间的联系通常有以下三种方式:一对一联系(1:1)一对多联系(1:n)多对多联系(m:n)一对一联系是一对多联系的特例,一对多联系又是多对多联系的特例。多对多联系直接处理起来很困难,通常是将多对多联系转化为两个一对多联系来处理。概念模型和各种
13、数据模型均不支持多对多联系,只支持一对一联系和一对多联系。同一实体集内的各实体之间也可以存在一对一、一对多或多对多联系。例如,学生实体集内部存在“领导与被领导”的联系,即某一学生(班长)“领导”多名(全班)学生,而一个学生仅被一个学生(班长)“领导”,这就是一对多联系。在复杂问题中,两个以上的实体集之间也往往存在一对一、一对多或多对多联系。1.2.4 概念模型对于具体的实际问题,建立正确合理的概念模型是建立数据模型的前提。一个好的概念模型应该考虑和解决的问题是:(1)实际问题需要哪些实体集以及各个实体需要哪些属性;(2)这些实体集内部和实体集之间有怎样的联系;(3)如果存在多对多联系,如何转化
14、为一对多联系。表示概念模型最常用的是实体联系方法(entity-relationshipapproach)。该方法用ER图来描述。在ER图中,实体型、属性和联系的表示方法如下:(1)实体型:用矩形表示,矩形框内写实体名;(2)属性:用椭圆表示,并用无向线段与相应的实体连接;(3)联系:用菱形表示,菱形框内写明联系名,并用无向线段与有关的实体连接。同时在无向线段旁标上联系的类型(1:1,1:n或m:n)。联系本身也是一种实体型,也可以有属性。如果一个联系有属性,也用无向线段将属性与该联系连接。(a)1:1联系(b)1:n联系(c)m:n联系两个实体之间的三类联系学生实体、课程实体及其属性将多对多
15、联系转化为一对多联系的一般方法是:增加一个新的实体集,并且这个新的实体集和原来的两个实体集之间都是一对多联系。学生学习成绩管理概念模型这个例子也给出了将多对多联系转化为一对多联系的一般方法,这就是:增加一个新的实体集,并且这个新的实体集和原来的两个实体集之间都是一对多联系。1.2.5 层次模型 层次模型(HierarchicalModel)用树形结构表示各类实体以及实体间的联系。从树的观点看,层次模型满足以下两个条件:(1)有且仅有一个结点无双亲结点,称之为根结点(简称根);(2)根以外的其他结点有且仅有一个双亲结点。层次模型只能反映实体之间一对多的关系。层次模型示意图下图所示是一个层次模型的
16、典型。1.2.6 网状模型 网状模型(NetworkModel)是比层次模型更具普遍性的一种结构。它去掉了层次模型的两个限制条件,允许有一个以上的结点无双亲结点,允许结点可以有多个双亲结点,此外它还允许两个结点之间有多种联系(称之为复合联系)。网状模型有如下优点:(1)可以直接描述包括多对多在内的更复杂的关系。(2)具有良好的性能,存取效率较高。网状模型也有缺点:(1)对计算机的硬件和软件环境要求较高。(2)数据库的独立性较差。(3)操作比较复杂。下图表示零部件的采购使用关系,这是一个典型的网状模型。下图表示1.2.4介绍的学生选修关系这个网状模型。1.2.7 关系模型关系模型(Relatio
17、nalModel)中数据的逻辑结构是一张二维表,它由行和列组成。表1-1所示的学生情况就是一个关系模型。关系模型的主要概念关系(relation):关系模型中表示数据的整个一张二维表就是关系。元组(Tuple):二维表中的每一行即为一个元组,对应概念模型的一个实体。属性(Attribute):二维表中的每一列即为一个属性,对应概念模型的一个属性。主码(Key):二维表中唯一标识元组的某个属性组称为该关系的主码,对应概念模型的码。域(Domain):二维表中任一属性的取值范围称为该属性的域,对应概念模型的域。分量:元组中的每一个属性值称为元组的分量。关系模式(Relationschema):对关
18、系的描述称为关系模式,通常用关系名及其所有属性名集合来表示,类似概念模型中实体型的表示方法。整个表1-1就是一个关系。表中的每一行都是一个元组。学号、姓名、性别等每一列都是属性。学号是这个关系的码。男、女、正确的日期集合分别是性别和出生年月日的域。0100001、冯东梅、女、1980-12-26、北京和1100等都是分量。而学生(学号,姓名,性别,出生年月日,家庭所在地,家庭人均月收入)是这个关系的关系模式。关系模型既可以反映属性之间一对多的关系,也可以反映属性之间多对多的关系。关系模型具有以下特点:(1)数据结构简单,概念清楚;(2)能够直接反映实体之间一对一、一对多和多对多关系;(3)通过
19、公共属性就可以建立表与表之间的联系,从而就建立了实体之间的联系;(4)具有严格的理论基础。1.2.8 面向对象模型 面向对象模型(ObjectOrientedModel)是数据库系统中最近出现的一种模型。面向对象模型中最基本的概念是对象(object)和类(class)。面向对象模型是正在发展中的模型,具有广阔的前途和生命力。1.3 关系的完整性关系模型允许定义三类完整性:实体完整性、参照完整性和用户定义的完整性。实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称为关系的两个不变性,由关系系统自动支持。这里先列出3个例题,以便后面引用。例1-1学生实体和专业实体可以用下面的关系表示
20、(其中主码用红色体字标识):学生(学号,姓名,性别,专业号,年龄)专业(专业号,专业名)例1-2学生实体、课程实体、学生与课程之间的选课及成绩实体可以用如下3个关系来表示:学生(学号,姓名,性别,专业号,年龄)课程(课程号,课程名,学分)选课及成绩(学号,课程号,成绩)例1-3另一个学生实体的关系是:学生2(学号,姓名,性别,专业号,年龄,班长学号)1.3.1 实体完整性一个基本关系通常对应现实世界的一个实体集。例如,学生关系对应学生的集合。现实世界的实体是可区分的,即它们具有某种唯一性标识。相应地,关系模型中以主码作为唯一性标识。主码中的属性即主属性不能取空值。所谓空值就是“不知道”或“无意
21、义”的值。如果主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与现实世界的应用环境相矛盾,因此这个实体一定不是一个完整的实体。实体完整性(Entity Integrity)规则:若属性A是基本关系R的主属性,则属性A不能取空值。在例1-1的学生关系中,学号为主码,则学号不能取空值。实体完整性规则规定基本关系的所有主属性都不能取空值,而不仅是主码整体不能取空值。在例1-2的选课及成绩关系中,学号+课程号为主码,则学号和课程号两个属性都不能取空值。 1.3.2 参照完整性现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述的。这样就自然存在着关系
22、与关系间的引用。例1-1的两个关系之间存在着属性的引用,即学生关系引用了专业关系的主码“专业号”。显然,学生关系中的专业号值,必须是确实存在的专业的“专业号”,即专业关系中有该专业的记录。这就是说,学生关系中的某个属性的取值需要参照专业关系对应属性的取值。例1-2的3个关系之间也存在着属性的引用,即选课及成绩关系引用了学生关系的主码“学号”和课程关系的主码“课程号”。选课及成绩关系中的学号值必须是确实存在的学生的“学号”,即学生关系中有该学生的记录;选课及成绩关系中的课程号值,也必须是确实存在的课程的“课程号”,即课程关系中有该课程的记录。选课及成绩关系中某些属性的取值需要参照其他关系对应属性
23、的取值。不仅两个或两个以上的关系间可以存在引用关系,同一关系内部属性间也可能存在引用关系。在例1-3的关系中,“学号”属性是主码,“班长学号”属性表示该学生所在班级的班长的学号,班长必须是这个班的学生,即“班长学号”必须是确实存在的学生的“学号”。设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码K相对应,则称F是基本关系R的外码(Foreign key),并称基本关系R为参照关系(Referencing relation),基本关系S为被参照关系(Referenced relation)或目标关系(Target relation)。关系R和S不一定是不同的关系。目标
24、关系S的主码Ks和参照关系R的外码F必须定义在同一个(或一组)域上。 下图清楚地表达了例1-1、例1-2和例1-3的参照关系。参照完整性规则就是定义外码与主码之间的引用规则。 参照完整性(Referential Integrity) 规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值);或者等于S中某个元组的主码值。对于例1-1,学生关系中每个元组的专业号属性只能取下面两类值:空值,表示尚未给该学生确定所学专业;非空值,这时该值必须是专业关系中某个元组的专业号值
25、,表示该学生不可能分配到一个不存在的专业中学习。即被参照关系“专业”中一定存在一个元组,它的主码值等于该参照关系“学生”中的外码值。对于例1-2中的选课及成绩关系,按参照完整性规则,学号和课程号属性也可以取两类值:空值或目标关系中已经存在的值。但由于学号和课程号是选课及成绩关系中的主属性,按照实体完整性规则,它们均不能取空值。所以选课及成绩关系中的学号和课程号属性实际上只能取相应被参照关系中已经存在的主码值。参照完整性规则中,R与S可以是同一个关系。例如,对于例1-3,按照参照完整性规则,班长属性值可以取两类值:空值,表示该学生所在班级尚未选出班长 ;非空值,这时该值必须是本关系中某个元组的学
26、号值 。1.3.3 用户定义的完整性实体完整性和参照性适用于任何关系数据库系统。除此之外,不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的实际要求,即取值的限制范围。例如,某个非主属性不能取空值(如:姓名)、某个属性的取值范围限定在0100之间(如:成绩)、某个属性只能取几个特定的值(如:性别)等。关系模型应提供定义和检验这类完整性机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。1.4 关系模型的规范化用关系模型描述现实世界直观、明了。但是,要做到用关系模型
27、很好地描述现实世界却不是一件容易的事情。设计一个好的数据库是一项极其复杂的工作,规范化理论就是设计过程中的一个非常有用的辅助工具。一般地说,关系模型的范式级别越高,设计的数据结构质量越高。第一范式是关系模型规范化最基本的要求,第二范式的级别比第一范式高,第三范式的级别又比第二范式高。 1.4.1 第一范式 如果关系模式R的每一个关系的属性值都是不可分的原子值,则称R属于第一范式(1NF)。属于1NF的关系称为规范化关系,不属于1NF的关系称为非规范化关系。不难验证,表1-1和表1-2所示的实体集都是属于1NF的规范化关系。但是实际问题中的报表结构有许多是非规范化的。例如,下页表1-3是不规范的
28、。从规范化的关系模型的数据库是完全能够生成象表1-3这样结构的报表的。 表1-3指导研究生导师姓名专业学生研究生1研究生2林知荣网络系统田园刘刚周银华数据库技术曲彩燕黎祥数据库技术邱罗耕方萍实际问题中的报表结构有许多是非规范化的。例如,表1-3是不规范的。不能依这样的结构设计关系模型,必须将这样的表需要的数据(以及其它数据)进行处理,使之规范化。从规范化的关系模型的数据库是完全能够生成象表1-3这样结构的报表的。表1-4 教师任课教工编号姓名课程号课程名称10013罗开才C031计算机应用基础10013罗开才C032数据库原理及应用10013罗开才C043操作系统10036刘霞C031计算机应
29、用基础10036刘霞C032数据库原理及应用10036刘霞C051软件工程10038欧阳华D001统计原理10038欧阳华D012经济法基础一个关系应满足1NF是最起码的条件。然而,仅满足1NF的关系还可能存在一些问题。表1-4是满足1NF的一个具体实例,但在操作中可能出现如下的一些问题。()插入异常()删除异常()数据冗余1.4.2 第二范式如果关系模式R属于1NF,并且每个非码属性都完全依赖于各个码,则称R属于第二范式(2NF)。如果某个数据库模式中的每个关系模式都是2NF,则这个数据库模式称为2NF的数据库模式。下页表1-5所示的关系模式R(学号,系名,系办地址,课程号,成绩),主码为学
30、号课程号。某个学生某门课程的成绩(一个非码属性)是完全依赖于他的学号和该课程的代号(主码)的。也就是说,知道了一个学生的学号和他参加考试的课程号(两者缺一不可),就知道了他这一门课的成绩。表1-5关系R学 号系名系办地址课程号成绩0100001经济管理系经管大楼A002850100001经济管理系经管大楼B001920100001经济管理系经管大楼B022780100001经济管理系经管大楼C032850100001经济管理系经管大楼D012780100002经济管理系经管大楼A002900100002经济管理系经管大楼B001800100002经济管理系经管大楼B022980100002经济
31、管理系经管大楼C032920100002经济管理系经管大楼D012890100096电子工程系电子大楼A002800100096电子工程系电子大楼B001750100096电子工程系电子大楼D001450100096电子工程系电子大楼D01228他所在的系名(另一非码属性)实际上仅完全依赖于他的学号(主码中的一个属性),与课程代号(主码中的另一个属性)无关。也就是说,只要知道了一个学生的学号(并不需要知道课程号),就知道了他所在的系名和系办地址。这个关系模式不属于2NF(仅属于1NF)。如果将R分解为两个关系模式R1(学号,系名,系办地址)和R2(学号,课程号,成绩),下页表1-6和表1-7,
32、则R1和R2都属于2NF了。表1-7关系R2学 号课程号成绩0100001A002850100001B001920100001B022780100001C032850100001D012780100002A002900100002B001800100002B022980100002C032920100002D012890100096A002800100096B001750100096D001450100096D01228这样分解之后,减少了冗余,节省了存储空间,降低了数据维护的代价。但是,另一方面是增加了查询难度。这说明,在确定数据模型时,不能简单地说采用第二范式一定比第一范式好,采用第三范式
33、也一定比第二范式好。到底采用哪个范式,要根据具体问题的要求确定。表1-6关系R1学 号系名系办地址0100001经济管理系经管大楼0100002经济管理系经管大楼0100096电子工程系电子大楼1.4.3 第三范式如果关系模式R是2NF,且每个非主属性都完全直接依赖于各个码(即既不部分依赖于码也不传递依赖于码),则称R属于第三范式(3NF)。如果某个数据库模式中的每个关系模式都是3NF,则这个数据库模式称为3NF的数据库模式。如果一个关系不属于第三范式,那么也可能存在一些问题。在关系R2中,主码为(学号、课程号),成绩是完全直接依赖于他的学号和该课程的代号(主码)的,故R2属于3NF。在关系R
34、1中,主码为(学号),知道了一个学生的学号(主码),就知道了他所在的系名,知道了他所在的系名(非码属性),也就知道了该系办公室的地址。系名是完全直接依赖于他的学号的。但系办公室的地址是通过系名间接(不是直接)依赖与他的学号的,故R1不属于3NF。正因为关系R1不属于3NF,也存在数据冗余和操作异常现象。例如,有多个学生同属于一个系,这个系的地址就多次重复。如果将关系R1分解为R11和R12(下页表1-8和表1-9),则R11和R12就都是属于3NF了。表1-8 关系R11学 号系名0100001经济管理系0100002经济管理系0100096电子工程系一个数据库满足的范式越多,数据的冗余度越小,共享性越高,所占的存储空间越少,并将数据的不一致性减少到最低程度。但是,高范式的数据库查询起来比较复杂。所以,不应一味追求高范式,对于包含频度很高的查询的数据库,不妨降低些范式。表1-9关系R12系名系办地址经济管理系经管大楼电子工程系电子大楼