1、第第2章章 数数 据据 模模 型型数据库不仅反映数据本身所表达的内容,而且还反映数据之间的联系。由于计算机不能直接处理现实世界中的具体事物,所以人们必须事先将具体事物转换成计算机能够处理的数据。在数据库系统的形式化结构中如何抽象、表示、处理现实世界中的信息和数据呢?这就是数据库的数据模型。通过数据模型这个工具来抽象、表示和处理现实世界中的信息和数据。本章主要介绍信息的三种世界的概念,概念模型(E-R图)和数据模型的组成,以及三种常用的数据模型。2.1 信息的三种世界信息的三种世界在信息社会中,信息成为比物质和能源更重要的资源,在国民经济中占据主导地位,并构成社会信息化的物质基础。以计算机、微电
2、子和通信技术为主的信息技术革命是社会信息化的动力源泉,从根本上改变了人们的生活方式、行为方式和价值观念。不同的领域,数据的描述也有所不同。人们在研究和处理数据的过程中,常常把数据的转换分为三个领域现实世界、信息世界、计算机世界。这三个世界间的转换过程就是客观现实的信息反映到计算机数据库中的过程。2.1.1 现实世界现实世界1实体(实体(Entity)现实世界中存在的可以相互区分的客观事物或概念称为实体。例如,计算机、电视、大象、人。2实体的特征(实体的特征(Entity Characteristic)每个实体都有自己的特征,利用实体的特征可以区别不同的实体。例如,电视有大小、型号、外观形状等特
3、征,人有身高、体重等特征。现实世界就是通过每个实体所特有的特征来相互区分的。3实体集(实体集(Entity Set)及实体集间的联系()及实体集间的联系(Relation)具有相同特征或能用同样特征描述的实体的集合称为实体集。例如,所有大象的实体集合就是大象的实体集,所有人的实体集合就是人的实体集。2.1.2 信息世界信息世界信息世界(Information World)是现实世界在人们头脑中的反映,人们用思维以现实世界为基础,对事物进行选择、命名、分类等抽象工作之后,并用文字符号表示出来,就形成了信息世界。信息世界主要涉及以下3个概念。1实例(实例(Example)实体通过其特征的表示称为实
4、例。实例与现实世界的实体相对应。例如,学生李勇就是一个学生实体,这个学生实体就是一个学生的实例。2属性(属性(Attribute)实体的特征在人们思想意识中形成的知识称为属性。一个实例可能拥有多个属性,其中能惟一标识实体的属性或属性集合称为码(Key)。每个属性的取值是有范围的,称为该属性的域(Domain)。属性与现实世界的特征相对应。3对象(对象(Object)及对象间联系()及对象间联系(Relation)同类实例的集合称为对象,对象即实体集中的实体用属性表示得出的信息集合。实体集之间的联系用对象联系表示。对象及对象间联系与现实世界的实体集及实体集间的联系相对应。2.1.3 计算机世界计
5、算机世界计算机世界(Computer World)又称数据世界(Data World),是将信息世界中的信息经过抽象和组织,按照特定的数据结构,即数据模型,将数据存储在计算机中。计算机世界主要涉及以下4个概念。1字段(字段(Field)用来标记实体的一个属性就叫做字段,它是可以命名的最小信息单位。例如,学生有学号、姓名、性别、出生日期等字段。字段与信息世界的属性相对应。2记录(记录(Record)记录是有一定逻辑关系的字段的组合。它与信息世界中的实体相对应,一个记录可以描述一个实体。例如,一个学生的记录由学号、姓名、性别、出生日期等字段组成。一个记录在某个字段上的取值称为数据项(Item)。3
6、文件(文件(File)文件是同一类记录的集合。它与信息世界中的对象相对应。文件的存储形式有很多种,例如,顺序文件、链接文件、索引文件等。4文件集(文件集(File Set)文件集是若干文件的集合,即由计算机操作系统通过文件系统来组织和管理。它与信息世界中的对象集相对应。文件系统通过对文件、目录、磁盘的管理,可以对文件的存储空间、读写权限等进行管理。2.1.4 三种世界的转换三种世界的转换信息的三种世界之间是可以进行转换的。人们常常首先将现实世界抽象为信息世界,然后将信息世界转换为计算机世界。也就是说,首先将现实世界中客观存在的事物或对象抽象为某一种信息结构,这种结构并不依赖于计算机系统,是人们
7、认识的概念模型;然后再将概念模型转换为计算机上某一具体的DBMS支持的数据模型。这一转换过程如图2-1所示。2.1.4 三种世界的转换三种世界的转换信息的三种世界在转换过程中,每种世界都有自己对象的概念描述,但是它们之间又相互对应。信息的三种世界之间的对象对应关系见表2-1。表2-1 信息的三种世界的对象转换过程现现 实实 世世 界界信信 息息 世世 界界计算机世界计算机世界实体实体实例实例记录记录特征特征属性属性数据项数据项实体集实体集对象对象文件文件实体间联系实体间联系对象间联系对象间联系文件集文件集 概念模型概念模型数据模型数据模型2.2 概念模型概念模型在把现实世界抽象为信息世界的过程
8、中,实际上是抽象出现实系统中有应用价值的元素及其关联。这时所形成的信息结构就是概念模型。这种信息结构不依赖于具体的计算机系统。2.2.1 概念模型的基本概念概念模型的基本概念1实体(实体(Entity)客观存在并且可以互相区别的事物称为实体。实体可以是人,也可以是物,也可以是抽象的概念;可以指事物本身,也可以指事物的联系。例如,一名学生,一门课、一次选课、学生和课程的关系等,都是实体。实体是信息世界的基本单位。2属性(属性(Attribute)实体所具有的某一特征称为属性。一个实体可以由多个属性来刻画,每一个属性都有其取值范围和取值类型。例如,一个学生实体可以由学号、姓名、性别、出生日期、学院
9、名称等属性组成,(2014029520,赵光明,男,1996-08-20,计算机学院)这些属性值组合在一起表示了一个学生的基本情况。3码(码(Key)能在一个实体集中惟一标识一个实体的属性称为码。码可以只包含一个属性,也可以同时包含多个属性。有多个码时,选择一个作为主码。最极端的一种情况就是所有属性组成主码,称为全码。4域(域(Domain)某个(些)属性的取值范围称为该属性的域。例如,性别的域为(男,女),姓名的域为字符串集合,学院名称的域为学校所有学院名称的集合。2.2.1 概念模型的基本概念概念模型的基本概念5实体型(实体型(Entity Type)具有相同属性的实体具有共同的特征和性质
10、。用实体名及其属性名集合来抽象和刻画的同类实体称为实体型。例如,学生(学号,姓名,性别,出生日期,学院名称)是一个实体型。6实体集(实体集(Entity Set)同类型的实体集合称为实体集。例如,全体学生就是一个实体集。7联系(联系(Relation)现实世界的事物之间是有联系的,这种联系必然要在信息世界中加以反映。这些联系在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系。实体(型)内部的联系主要表现在组成实体的属性之间的联系。实体(型)之间的联系主要表现在不同实体集之间的联系。2.2.1 概念模型的基本概念概念模型的基本概念两个实体之间的联系有三种:一对一联系、一对多联系、多对多
11、联系。(1)一对一联系(1:1)设对于实体集A中的每一个实体,实体集B中至多有一个实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系,记作1:1。(2)一对多联系(1:n)设实体集A中的一个实体与实体集B中的多个实体相对应(相联系),反之,实体集B中的一个实体至多与实体集A中的一个实体相对应(相联系),则称实体集A与实体集B的联系为一对多的联系。(3)多对多联系(m:n)设实体集A中的一个实体与实体集B中的多个实体相对应(相联系),而实体集B中的一个实体也与实体集A中的多个实体相对应(相联系),则称实体集A与实体集B的联系为多对多的联系。两个实体之间的联系可以用图形表示,如图2-2所
12、示。2.2.1 概念模型的基本概念概念模型的基本概念在现实世界,不但两个实体之间存在联系,多个实体之间也会存在联系。例如,课程、学生、教师三个实体之间存在联系。一门课程由多个教师讲解,一个学生可以选修多门课程,一个教师可以讲授多门课,如图2-3所示。同一实体集内的各实体之间也可以有某种联系。例如,公司的职工实体集内,有董事长,也有一般员工,具有领导和被领导的联系,即一个董事长可以领导多个职工,而一个职工只能被一个董事长领导。因此这是一对多的联系,如图2-4所示。2.2.2 概念模型的表示概念模型的表示1实体实体实体用长方形表示,并在长方形中标注实体名。例如,教师实体、课程实体,职工实体,如图2
13、-5所示。2实体的属性实体的属性实体的属性用椭圆形表示,并在在椭圆中标注属性名,再用无向边将该属性与对应实体连接起来。在多个属性中,如果有一个(组)属性可以惟一表示该实体,则可以在该属性下边画出下划线,用来标识该属性,即主属性,也就是主码。例如,学生实体有学号、姓名、性别、出生日期、学院名称属性,其中学号为主属性。课程实体有课程号、课程名、学分属性,其中课程号为主属性。如图2-6所示。2.2.2 概念模型的表示概念模型的表示3实体间的联系实体间的联系实体间的联系用菱形表示,在菱形中标注联系名,再用无向边将该联系与联系实体连接起来,同时在无向边旁标注联系的类型。通常,如果实体之间有同名属性,并且
14、同名属性表示的含义也相同,则实体之间有联系。例如,学校实体与教师实体之间存在联系。因为每个学校都有许多教师,某一个教师必须属于某一个学校,所以教师和学校之间有联系,联系类型为1:n(即一对多)。如图2-7所示。2.2.2 概念模型的表示概念模型的表示【例2-1】用E-R图来描述一个简单的仓库管理系统的概念模型。一个简单的仓库管理系统由仓库实体、管理员实体、货物实体。由于有的仓库可能需要多个管理员管理,但一个管理员只能管理一个仓库,所以仓库实体是全码。如图2-8所示。2.2.2 概念模型的表示概念模型的表示货物必须存储在仓库中,因此存储也是一个实体。由于有的仓库存储多种货物,也有的货物存放在多个
15、仓库中,所以存储实体是全码。存储实体E-R图如图2-9所示。将所有实体联系起来,组成完整的仓库管理系统E-R图。如图2-10所示。2.3 数据模型数据模型虽然概念模型不依赖于计算机系统,但现实世界的数据最终还是要存放到计算机的数据库中。这时就需要将概念模型转化为与具体计算机数据库相关的数据模型。数据模型(Data Model)是严格定义的一组概念的集合。这些概念精确地描述了系统的静态和动态特性,是数据库中用来对现实世界进行抽象的工具,是数据库系统的核心与基础,是描述数据的结构以及定义在其上的操作和约束条件。2.3.1 数据模型的基本概念数据模型的基本概念1数据结构数据结构数据结构是相互之间存在
16、一种或多种特定关系的对象元素的集合。在任何对象集合中,对象元素都不是孤立存在的,而是在它们之间存在着某种关系,这种对象元素相互之间的关系称为结构。根据对象元素之间关系的不同特性,通常有5种基本结构:集合、线形结构、树形结构、图状结构(或网状结构)、关系结构。2数据操作数据操作数据操作是指数据库中各对象的实例允许执行的操作的集合,包括操作及有关的操作规则。数据库主要有检索和更新(包括插入、删除、修改)两大类操作。数据模型必须定义这些操作的确切含义、操作符号、操作规则以及实现操作的语言。数据操作是对系统动态特性的描述。3数据的完整性约束条件数据的完整性约束条件数据的约束条件是一组完整性规则的集合。
17、完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容。数据模型应该反映和规定本数据模型必须遵守的基本的通用的完整性约束条件。此外,数据模型还应该提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件。2.3.2 常用的数据模型常用的数据模型1层次模型层次模型用树形结构来表示实体以及实体之间联系的模型称为层次模型。层次模型是数据库系统中最早出现的数据模型,在现实世界中有许多实体之间的联系就属于层次模型。例如,一个家族的家谱、一个单位的机构设置等。(1)层次模型的定义及数据结构数据
18、库的数据模型如果满足以下两个层次联系,就称为层次模型:1)有且仅有一个结点,没有双亲结点,这个结点称为根结点。2)除根结点之外的其他结点有且只有一个双亲结点。层次模型像一棵倒立的树,只有一个根结点,有若干个叶结点。如图2-11所示。2.3.2 常用的数据模型常用的数据模型在层次模型中,实体集使用记录型(或记录)表示。记录描述实体,可以包含若干个字段;字段描述实体的特征,每个字段都必须命名,并且同一实体中的字段不能重名;记录值表示实体特征的具体数据;记录之间的联系使用基本层次联系表示。(2)层次模型的数据操作和完整性约束条件层次模型的数据操作主要有查询、添加、修改和删除。在进行添加、修改和删除操
19、作时要满足以下层次模型的完整性约束条件:1)在进行插入记录值操作时,如果没有指明相应的父记录值,则不能插入子记录值。2)在进行删除记录操作时,如果删除父记录值,则相应的子结点值也同时被删除。3)进行修改记录操作时,如果记录之间有关系,则应修改所有相应的记录,以保证数据的一致性。2.3.2 常用的数据模型常用的数据模型(3)层次模型的优缺点层次模型的优点有:1)层次模型本身结构简单、清晰。2)对于包含大量数据的数据库来说,采用层次模型来实现,其效率很高。3)层次数据模型提供了良好的完整性支持。层次模型的缺点有:1)由于现实世界非常复杂,层次模型表达能力有限,特别是不能表示多对多的联系。2)数据冗
20、余度增加,查询不灵活,特别是查询子女结点必须通过双亲结点。3)对插入和删除操作的限制比较多。4)编写应用程序比较复杂,程序员必须熟悉数据库的逻辑结构,开发效率较低。2.3.2 常用的数据模型常用的数据模型2网状模型网状模型在现实世界中,事物之间的联系并不能完全用层次模型表示,于是又产生了网状模型。用网状结构来表示实体以及实体之间联系的模型称为网状模型。在现实世界中,更多的实体之间的联系呈现出网状结构。例如,一个局域网中计算机的设置、公路交通的设置等。(1)网状模型的定义及数据结构数据库的数据模型如果满足以下两个联系,就称为网状模型:1)有一个以上的结点没有父结点。2)结点可以有多于一个的父结点
21、。由于网状模型中实体之间的联系是多对多的联系(复合联系),所以基于网状模型的层次数据库联系表达方式比较复杂。如图2-12所示。2.3.2 常用的数据模型常用的数据模型(2)网状模型的数据操作和完整性约束条件网状模型的数据操作主要有查询、添加、修改和删除。在进行添加、修改和删除操作时要满足以下网状模型的完整性约束条件:1)支持记录码的概念。码即惟一标识记录的数据项的集合。2)保证一个联系中父结点记录和子结点记录之间是一对多的联系。3)可以支持父结点记录和子结点记录之间的某种约束条件。(3)网状模型的优缺点网状模型的优点有:1)能够更直接地描述现实世界,能够表示实体之间的多种复杂联系。2)具有良好
22、的性能,存取效率较高。网状模型的缺点有:1)网状模型结构比较复杂,不利于数据库的扩充。2)操作复杂,不利于用户掌握。3)编写应用程序比较复杂,程序员必须熟悉数据库的逻辑结构,开发效率较低。2.3.2 常用的数据模型常用的数据模型3关系模型关系模型关系模型是数据模型中最重要的模型。目前,几乎所有的数据库管理系统都支持关系模型。数据库领域中当前的研究工作也都是以关系方法为基础的。关系模型把世界看作是由实体和联系构成的。在关系模型中,实体通常是以表的形式来表现的。表的每一行描述实体的一个实例,表的每一列描述实体的一个特征或属性。所谓联系,就是指实体之间的关系,即实体之间的对应关系。在现实世界中,几乎
23、所有的实体和实体之间的联系都可以用关系模型表示。例如,学生、教师、课程信息等。2.3.2 常用的数据模型常用的数据模型(1)关系模型的定义及数据结构关系模型中主要涉及的概念有:1)关系(Relation)。一个关系对应通常所说的一张二维表,Student表就是一个关系,表结构见表2-2。表2-2 Student表关系模型的数据结构StudentIDNameSexBirthdayAdressSchoolName2014021224张兰婷女1996-10-12北京体育学院体育学院2014002406刘雨航男1996-11-02上海艺术学院艺术学院2014161336王峰宇男1995-09-12广州
24、计算机学院计算机学院2014001203赵广田男1996-01-23郑州物理学院物理学院2014021268秦燕菲秦燕菲女女1996-03-29武汉武汉化学学院化学学院2.3.2 常用的数据模型常用的数据模型2)元组(Tuple)。表中的一行称为一个元组。3)属性(Attribute)。表中的一列称为一个属性。4)主码(Primary Key)。表中的某个属性或属性组,它们的值可以惟一地确定一个元组,且属性组中不含多余的属性,这样的属性或属性组称为关系的码或主码。5)域(Domain)。属性的取值范围称为域。6)分量(Element)。元组中的一个属性值称为分量,即行和列的交叉。7)关系模式(
25、Relation model)。关系的型称为关系模式,关系模式是对关系的描述。关系模式的一般表示是:关系名(属性1,属性2,属性n)。8)关系模型由三部分组成:关系数据结构、关系操作集合和关系的完整性。关系模型把所有的数据都组织到表中。表是由行和列组成的,行表示数据的记录,列表示记录中的域。表反映了现实世界中的事实和值。2.3.2 常用的数据模型常用的数据模型(2)关系模型的数据操作和完整性约束条件关系数据模型的操作主要包括查询、添加、修改和删除数据。数据之间还存在联系。联系可以分为三种:一对一的联系、一对多的联系、多对多的联系。通过联系,就可以用一个实体的信息来查找另一个实体的信息。在进行添
26、加、修改和删除操作时要满足关系模型的完整性约束条件。关系的完整性约束条件包括三类:实体完整性和用户定义的完整性。关系中的数据操作可看作是集合或关系的操作,操作对象和操作结果都是集合(关系)。即操作的结果是由原表中导出的一个新表。在关系操作过程中,使用关系操作语言。关系操作语言都是高度非过程的语言,它将数据的存取路径向用户隐蔽起来,用户只要指出“干什么”或“找什么”,不必说明“怎么干”或“怎么找”,从而大大地提高了数据的独立性,提高了用户的使用效率。2.3.2 常用的数据模型常用的数据模型关系模型与非关系模型相比较,具有以下特点:1)关系数据模型不同于非关系模型,它是建立在严格的数学基础之上的。
27、2)关系数据模型与非关系模型相比较,概念单一,结构清晰,容易理解。3)关系数据模型的存取路径对用户是隐蔽的,但关系数据模型对用户是透明的,从而简化了用户的工作,提高了效率。实际上,关系数据模型的查询效率往往不如非关系模型,所以必须对关系数据模型的查询进行优化,这就增加了开发数据库的难度。4)关系模型中的数据联系是靠数据冗余实现的。(3)关系模型的优缺点关系模型的优点有:1)使用表的概念来表示实体之间的联系,简单直观。2)关系型数据库都使用结构化查询语句,存取路径对用户是透明的,从而提供了数据的独立性,简化了程序员的工作。3)关系模型是建立在严格的数学概念的基础上的,具有坚实的理论基础。关系模型
28、的缺点有:关系模型的联结等查询操作开销较大,需要较高性能计算机的支持,所以必须提供查询优化功能。2.3.2 常用的数据模型常用的数据模型4面向对象模型面向对象模型面向对象数据库系统(Object Oriented DataBase System,简称OODBS)是数据库技术与面向对象程序设计方法相结合的产物。现实世界中的事物都是对象,对象可以看成是一组属性和方法的结合体。例如,学生、汽车、数学定理都是对象。属性则表示对象的状态与组成。例如,学生具有学号、姓名、身高等属性;汽车具有颜色、型号、价格等属性;数学定理具有含义等属性。对象的行为称为方法。例如,学生可以进行学习、运动等行为(方法);汽车
29、可以静止或运行等;数学定理可以运用等。在面向对象技术中,通过方法来访问与修改对象的属性。这样就将属性与方法完美地结合在一起。在现实世界中有许多对象来自于同一集合,例如,所有的学生都是人,则这些集合统称为类。类是对象的模板,它规定该类型的对象有哪些属性、哪些方法等。面向对象方法适于模拟实体的行为,核心是对象。2.3.2 常用的数据模型常用的数据模型面向对象数据库系统支持的数据模型称为面向对象数据模型(OO模型),即一个面向对象数据库系统是一个持久的、可共享的对象数据库,而一个对象是由一个OO模型所定义的对象的集合体。OO模型中的主要术语有以下3个。(1)对象(Object)现实世界的任一实体都被
30、称为模型化的一个对象,每一个对象有一个惟一的标识,称为对象标识。(2)封装(Encapsulation)每一个对象都将其状态、行为封装起来,其中状态就是该对象的属性值的集合,行为就是该对象的方法的集合。(3)类(Class)具有相同属性和方法的对象的集合称为类。一个对象是某一类的一个实例。2.4 关系数据库关系数据库关系数据库是采用关系模型作为数据组织方式的数据库。关系数据库是应用数学的方法来处理数据库中的数据,也就是说,它是建立在严格的数学理论基础之上的。2.4.1 关系模型的组成关系模型的组成关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。1关系数据结构关系数据结构关系模型
31、的数据结构简单清晰,关系单一。在关系模型中,现实世界的实体以及实体间的各种联系均可用关系来表示,从用户角度看,关系模型中数据的逻辑结构就是一张二维表,由行列组成。2关系关系操作操作关系模型中常用的关系操作包括:选择(Select)、投影(Project)、连接(Join)、除(Divide)、并(Union)、交(Intersection)、差(Difference)等查询(Query)操作和增加(Insert)、删除(Delete)、修改(Update)操作。其中,查询的表达能力是其最主要的部分。3关系的三类完整性约束关系的三类完整性约束关系模型提供了完备的完整性控制机制,定义了三类完整性约
32、束:实体完整性、参照完整性和用户定义的完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,应该由关系系统自动支持。用户定义的完整性是特定的数据库在特定的应用领域需要遵循的约束条件,体现了具体领域中的语义约束。2.4.2 关系的数学定义关系的数学定义在关系模型中,数据在用户观点下是一个逻辑结构为二维表的数据模型。而关系模型是建立在关系(或集合)代数的基础之上的。定义1 域(Domain)是一组具有相同数据类型的值的集合。例如,自然数、正整数、所有字符集合,都是域。定义2 设D1,D2,Dn为任意域,定义D1,D2,Dn的笛卡尔积(Cartesian Product)为:其中,每
33、一个元素(d1,d2,dn)称为一个n元组(n-Tuple),简称为元组(Tuple)。元组中每一个值di称为一个分量(Component)。若Di(i=1,2,,n)为有限集,其基数(Cardinal Number)为mi(i=1,2,,n),则D1D2Dn的基数为m=m1m2mn。12n12niiDDD(d,d,d)|dD,i1,2,n2.4.2 关系的数学定义关系的数学定义【例2-2】设D1为SchoolName域,D2为StudentName域,且D1=计算机学院,艺术学院,体育学院,D2=王峰宇,刘雨航,秦燕菲,则D1,D2的笛卡尔积为:D1D2=(计算机学院,王峰宇),(计算机学院
34、,刘雨航),(计算机学院,秦燕菲),(艺术学院,王峰宇),(艺术学院,刘雨航),(艺术学院,秦燕菲),(体育学院,王峰宇),(体育学院,刘雨航),(体育学院,秦燕菲)。其中,(计算机学院,王峰宇)、(艺术学院,刘雨航)等都是元组。如图2-14所示。2.4.2 关系的数学定义关系的数学定义笛卡尔积可以表示为一个二维表,表中的每一行对应一个元组,表中的每一列对应一个域。2.4.2 关系的数学定义关系的数学定义定义3 D1D2Dn的任意一个子集叫做D1D2Dn上的一个关系(Relation),用R(D1D2Dn)表示。这里R表示关系名,n表示关系的目或度(Degree)。每个元素是关系中的元组,通常
35、用t表示。当n=1时,称为单元关系(Unary Relation);当n=2,称为二元关系(Binary Relation)。关系是笛卡尔积的子集,而且是一个有限集,所以关系也可以用一个二维表表示。这个二维表是由关系的笛卡尔积导出的。表中的每一行对应一个元组,表中的每一列对应一个域。为了区分每一列,必须给它起一个名字,称为属性(Attribute)。n目关系必有n个属性。如果关系中的某一属性组的值能惟一地标识一个元组,则称该属性组为候选键(Candidate Key)。若一个关系有多个候选键,则选定其中一个作为主码或主键(Primary Key)。主码的诸属性称为主属性(Prime Attri
36、bute)。2.4.2 关系的数学定义关系的数学定义【例2-3】计算机学院关系是D1D2的一个子集。如图2-15所示。2.4.2 关系的数学定义关系的数学定义综上所述,关系可以有三种基本类型:基本表、查询表和视图表。基本表就是实际存在的表,即物理表,是数据存储的逻辑表示。查询表是查询结果对应的表,是由基本表的笛卡尔积导出的。视图表是由基本表或其他视图表导出的表,是虚表,不存储数据。由此得出,关系具有以下性质:1)列是同质的,即每一列中的分量是同一类型的数据,来自同一个域。2)不同的列可以出自同一个域,每一列称为一个属性。在同一关系中,属性名不能相同。3)列的顺序无关紧要,即列的顺序可以任意转换
37、。4)任意两个元组(行或记录)不能完全相同。5)行的顺序也无关紧要,即行的顺序也可以任意转换。6)行列的交集称为分量,每个分量的取值必须是原子值,即分量不能再分。关系的描述称为关系模式。它包括关系名、组成该关系的各属性名、属性来自的域、属性向域的映像、属性间数据的依赖关系等。因此一个关系模式应当是一个5元组。2.4.2 关系的数学定义关系的数学定义定义4 关系的描述称为关系模式(Relation Schema)。它可以形式化地表示为:R(U,D,dom,F)其中,R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,dom为属性向域的映像,F为属性间数据的依赖关系集合。通常在不
38、产生混淆的情况下,关系模式也可以称为关系。2.4.3 关系代数关系代数关系代数是一种抽象的查询语言,是关系数据操作语言的一种传统表达方式,它是用对关系的运算来表达查询的。1关系代数的运算关系代数的运算关系代数的运算按运算符性质的不同可以分为两大类。(1)传统的集合运算传统的集合运算将关系(二维表)看成是元组(记录)的集合,其运算是以关系的“水平”方向即行的角度来进行运算的。传统的集合运算包括并、差、交、广义笛卡尔积。(2)专门的关系运算专门的关系运算将关系(二维表)看成是元组(记录)或列(属性)的集合。其运算不仅可以从“水平”方向,还可以从“垂直”角度来进行运算。比较运算符和逻辑运算符是用来辅
39、助专门的关系运算符进行操作的,包括大于、大于等于、小于、小于等于、等于、不小于、与、或、非。专门的关系运算包括选择、投影、连接、除。2.4.3 关系代数关系代数2关系代数用到的运算符关系代数用到的运算符关系代数的运算对象是关系(或表),运算结果也是关系(或表)。关系代数用到的运算符有:1)传统的集合运算符:(并)、(差)、(交)、(笛卡尔积)。2)专门的关系运算符:(选择)、(投影)、(连接)、(除)。3)算术比较符:(大于),(大于等于),(小于),(小于等于),=(等于),(不等于)。4)逻辑运算符:(非)、(与)、(或)。2.4.4 传统的集合运算传统的集合运算传统的集合运算包括并(Un
40、ion)、差(Except)、交(Intersection)、笛卡尔积(Cartesian Product)4种运算。它们都是二目运算,即集合运算符两边都必须有运算对象。现有两个课程关系表Course1和Course2,见表2-3、2-4。CourseIDCourseNameCredit101计算机网络4102数据库原理3103网络开发网络开发4CourseIDCourseNameCredit101计算机网络4202中国古代史4203世界史世界史42.4.4 传统的集合运算传统的集合运算1并并【例2-4】Course1Course2,结果见表2-5。CourseIDCourseNameCred
41、it101计算机网络4102数据库原理3103网络开发4202中国古代史4203世界史世界史42.4.4 传统的集合运算传统的集合运算2差差【例2-5】Course1Course2,结果见表2-6。CourseIDCourseNameCredit102数据库原理3103网络开发网络开发42.4.4 传统的集合运算传统的集合运算3交交【例2-6】Course1Course2,结果见表2-7。CourseIDCourseNameCredit101计算机网络计算机网络42.4.4 传统的集合运算传统的集合运算4笛卡尔积笛卡尔积【例2-7】Course1Course2,结果见表2-8。CourseID
42、CourseNameCreditCourseIDCourseNameCredit101计算机网络4101计算机网络4102数据库原理3101计算机网络4103网络开发4101计算机网络4101计算机网络4202中国古代史4102数据库原理3202中国古代史4103网络开发4202中国古代史4101计算机网络4203世界史4102数据库原理3203世界史4103网络开发网络开发4203世界史世界史42.4.5 专门的关系运算专门的关系运算仅依靠传统的集合运算还不能灵活地实现多样的查询操作,因此关系模型有一组专门的关系运算,包括选择(Selection)、投影(Projection)、连接(Joi
43、n)、除(Division)。其中连接又分为等值连接和自然连接两种。等值连接,自然连接。2.4.5 专门的关系运算专门的关系运算1选择选择【例2-8】查询PressID编号为22的出版社信息。PressID=22(Press)【例2-9】查询男作者的信息。Sex=男(Author)PressIDPressName22机械出版社机械出版社AuthorIDNameSex130王高峰男男131赵立岩赵立岩男男2.4.5 专门的关系运算专门的关系运算2投影投影【例2-10】查询所有作者的编号和姓名。AuthorID,Name(Author)【例2-11】查询由21号出版社出版的图书信息。AuthorI
44、D,PressID,Title(PressID=21(Publish)AuthorIDName130王高峰王高峰131赵立岩赵立岩132刘丽娜刘丽娜133陈娟娟陈娟娟AuthorIDPressIDTitle13021线性代数线性代数13121旅游指南旅游指南2.4.5 专门的关系运算专门的关系运算3连接连接【例2-12】查询赵立岩出版的图书信息。(AuthorID(Name=赵立岩(Author)Publish Author.AuthorID=Publish.AuthorIDAuthorIDPressIDTitle13121旅游指南旅游指南2.5 关系查询优化关系查询优化查询优化是必要的。但用
45、户应当认识到,进行优化的工作还将耗费系统的资源。一般说来,优化做得越细,系统的开销就越大。下面讲的优化是相对的,即不是在所有可能的路径任意挑选最省时间的方法,而是进行各种操作的一般策略。1)选择运算尽早进行。对于含有选择运算的表达式,应优化成尽可能先执行选择运算的等价表达式,以得到较小的中间结果,减少运算量和从外存读块的次数。2)合并笛卡尔乘积与其后的选择运算为连接运算。在表达式中,当笛卡尔乘积后面是选择运算时,应将它们合并为连接运算,使选择和笛卡尔乘积一起完成,以避免在做笛卡尔乘积之后,还需再次扫描一个较大的笛卡尔乘积的关系进行选择运算。3)把投影运算和选择运算同时进行。以避免分开运算造成多
46、次扫描文件,如果有一连串的投影运算和选择运算且只有一个运算对象,那么就可以在扫描表示该对象的文件过程中同时完成所有这些运算。这就避免了重复多次扫描文件,从而节省了操作时间。2.5 关系查询优化关系查询优化4)把投影运算与其后的其他运算同时进行,以避免重复多次扫描文件。5)事先处理文件。在执行连接(或笛卡尔乘积后跟选择)运算之前,适当地处理一下文件是有益的。对需要的属性建立索引或进行排序,这两种方法都有助于快速有效地找到应当连接的元组。6)存储公用的子表达式。对于有公用的子表达式的操作,应将公用的子表达式的结果存于外存,当从外存中读出它比计算它的时间少时就能节省操作时间,特别是当公用的子表达式出现频繁时效果更好。