《数据库原理及应用》课件第2章_第1页
《数据库原理及应用》课件第2章_第2页
《数据库原理及应用》课件第2章_第3页
《数据库原理及应用》课件第2章_第4页
《数据库原理及应用》课件第2章_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章关系数据库2.1关系数据库概述2.2关系模型概述2.3关系数据结构 2.4关系的完整性2.5关系代数本章小结习题2

本章主要内容

关系运算是设计关系数据库操作语言的理论基础,实现数据间的联系可以用关系运算完成。本章讲解关系数据库的重要概念,包括关系、关系模型、关系的三类完整性约束和关系代数。其中,关系完整性约束将在后续章节进行讨论。

本章学习目标

了解关系数据模型的组成部分。

理解关系、关系模型的概念并掌握关系的完整性约束。

熟练掌握关系代数的各种运算。

2.1关系数据库概述

关系数据库用数学方法来处理数据库中的数据。最早将这类方法用于数据处理的是1962年CODASYL发表的“信息代数”,之后有1968年DavidChild的集合论数据结构,系统而严格地提出关系模型的是IBM公司的E.F.Codd,1970年6月他在《CommunicationofACM》上发表了题为“ARelationalModeofDataforLargeSharedDataBanks”(用于大型共享数据库的关系数据模型)一文。

ACM后来在1983年把这篇论文列为自1958年以来的25年中最重要的具有里程碑式意义的25篇论文之一,因为这篇论文首次明确而清晰地为数据库系统提出了一种崭新的模型,即关系模型,开创了数据库系统的新纪元。

20世纪70年代末,关系方法的理论研究和软件系统的研制均取得了很大进展,IBM公司的SanJose实验室在IBM370系列机上研制的关系数据库实验系统SystemR历时6年获得成功。1981年IBM公司又宣布了具有SystemR全部特征的新的数据库软件产品SQL/DS问世。

关系数据库系统的研究和开发取得了辉煌的成就。关系数据库系统从实验室走向了社会,成为最重要、应用最广泛的数据库系统,大大地促进了数据应用领域的扩大和深入。

2.2关系模型概述

2.2.1关系模型的数据结构关系模型的数据结构非常简单,只包含单一的数据结构——关系。在用户看来,关系模型中数据的逻辑结构是一张扁平的二维表。关系模型的这种简单的数据结构能够表达丰富的语义,描述出现实世界的实体以及实体间的各种联系。也就是说,在关系模型中,现实世界的实体以及实体间的各种联系均用单一的结构类型即关系来描述。

2.2.2关系操作

关系模型中的数据操作是集合操作,操作对象和操作结构都是关系,即若干元组的集合,而不是像非关系模型中单记录的操作方式。关系模型把存取路径隐蔽起来,用户只需知道“干什么”或“找什么”,不必详细了解“怎么干”或“怎么找”,从而大大地提高了数据的独立性。

关系模型中常用的关系操作包括两类:查询操作和更新操作。

查询操作包括选择、投影、连接、除、并、交、差等。更新操作包括插入、删除、修改操作。

表达(或描述)关系操作的关系数据语言可分为三类,如表2.1所示。

1.关系代数

关系代数是用关系的运算来表达查询要求的方式。

2.关系演算

关系演算是用谓词来表达查询要求的方式。关系演算又可按谓词变元的基本对象是元组变量还是域变量,分为元组关系演算和域关系演算。关系代数、元组关系演算和域关系演算三种语言在表达能力上是等价的。

3.介于关系代数和关系演算之间的语言SQL(StandardQueryLanguage)

SQL不仅具有丰富的查询功能,而且具有数据定义和数据控制功能,是集数据查询、数据定义(DDL)、数据操纵(DML)和数据控制(DCL)于一体的关系数据语言。它充分体现了关系数据语言的特点和优点,是关系数据库的标准语言。

2.2.3完整性约束

关系模型提供了丰富的完整性约束机制,允许定义三类完整性:实体完整性、参照完整性和用户定义的完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,应该由关系系统自动支持。

2.3关系数据结构

2.3.1关系

1.域(Domain)定义2.1域是一组具有相同数据类型的值的集合。

例如:自然数、整数、实数、长度小于25字节的字符串集合、大于等于1且小于等于100的正整数集合等,都可以是域。

在关系中用域来表示属性的取值范围。域中所包含的值的个数称为域的基数(用m表示)。例如:

牌值域:D1={A,2,3,4,5,6,7,8,9,10,J,Q,K};

基数:m1=13;

花色域:D2={黑桃,红桃,梅花,方片};

基数:m2=4。

2.笛卡尔积(CartesianProduct)

定义2.2给定一组域D1,D2,…,Dn,这些域可以完全不同,也可以部分或全部相同,则D1,D2,…,Dn的笛卡尔积为

D1

× D2

× …

× Dn

=

{

d1,d2,…,dn

|

di∈Di,i

=

1,2,…,n}

笛卡尔积也是一个集合。其中每个元素(d1,d2,…,dn)叫做一个n元组(n-tuple),简称元组。元素中的每个值di叫做一个分量(Component)。

若Di

(i

=

1,2,…,n)为有限集,其基数为mi

(i

=

1,2,…,n),则D1 × D2

× …

× Dn的基数为

【例2.1】设有D1

=

{A,2,3,…,J,Q,K},D2

=

{黑桃,红桃,梅花,方片},则D1,D2的笛卡尔积为

D1

×

D2

{(A,黑桃),(A,红桃),(A,梅花),(A,方片),

(2,黑桃),(2,红桃),(2,梅花),(2,方片),

…………

(K,黑桃),(K,红桃),(K,梅花),(K,方片),};

基数为13 × 4 = 52。

笛卡尔积可表示为一个二维表(见表2.2),表中的每行对应一个元组,表中的每列对应一个域。

3.关系(Relation)

笛卡尔积中许多元组无实际意义,从中取出有实际意义的元组便构成关系。

定义2.3:D1

× D2

× …

× Dn 的有意义的子集称为域D1

× D2

× …

× Dn 上的关系,记为(D1

× D2

× …

× Dn

)。

其中,R表示关系名,n表示关系的度或目(Degree)。

关系中的每个元素是关系中的元组,通常用t表示,t∈R表示t是R中的元组。

当n

= 1时,称该关系为单元关系或一元关系;当n

= 2时,称该关系为二元关系。

关系是笛卡尔积的有限子集,所有关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。由于域可以相同,为了加以区分,必须对每一列起一个名字,称为属性(Attribute)。n目关系必有n个属性。

【例2.2】设有以下三个域:

D1

= 男人(MAN)={王强,李东,张兵};

D2

= 女人(WOMAN)={赵红,吴芳};

D3

= 儿童(CHILD)={王娜,李丽,李刚}。

其中,王强与赵红的子女为王娜;李东与吴芳的子女为李丽和李刚。

(1)求上面三个域的笛卡尔积:D1

× D2

× D3;

(2)构造一个家庭关系:FAMILY。

首先求出笛卡尔积D1

× D2

× D3

(见表2.3),然后按照家庭的含义在D1

× D2

× D3 中取出有意义的子集则构成了家庭关系(见表2.4),可表示为:FAMILY(MAN,WOMAN,CHILD)。

4.关系的相关概念

候选码:若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码或候选键(CandidateKey)。

在最简单的情况下,候选码只包含一个属性。在最极端的情况下,关系模式的候选码由所有属性构成,称为全码或全键(All-Key)。

主码:当关系中有多个候选码时,应选定其中的一个候选码为主码或主键(PrimaryKey)。当然,如果关系中只有一个候选码,这个唯一的候选码就是主码。

主属性和非主属性:关系中,候选码中的属性称为主属性(PrimeAttribute),不包含在任何候选码中的属性称为非主属性(Non-KeyAttribute)。

例如:有如下三个关系:

学生关系:Student(sno,sname,sdept,sage);

课程关系:Course(cno,cname,credit);

选课关系:Sc(sno,cno,grade)。

关系Student的候选码为sno和sname(假设学生的姓名不重复),可选sno为主码。关系Course的候选码为cno,主码为cno。关系Sc的候选码为(sno,cno),主码为(sno,cno)。

5.关系的性质

关系有三种类型:基本关系(又称基本表或基表)、查询表和视图表。

基本表是实际存在的表,它是实际存储数据的逻辑表示;查询表是查询结果对应的表;视图表是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。

基本关系具有以下六条性质:

①列是同质的,即每一列中的分量是同一类型的数据,来自同一个域。

②不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。

③列的顺序无所谓,即列的顺序可以任意交换。由于列顺序是无关紧要的,因此在许多实际关系数据库产品中,增加新属性时,永远是插至最后一列。

④任意两个元组不能完全相同。但在一些实际的关系数据库产品中,如Oracle、SQLServer、FoxPro等,如果用户没有定义相关的约束条件,则允许在关系表中存在两个完全相同的元组。

⑤行的顺序无所谓,即行的顺序可以任意交换。

⑥分量必须取原子值,即每个分量必须是不可再分的数据项。

2.3.2关系模型

首先,应该知道,关系实质上是一个二维表,表的每一行为一个元组,每一列为一个属性。

其次,一个关系通常是由元组语义来确定的。元组语义实质上是一个n目谓词(n是属性集中属性的个数),使该n目谓词为真的笛卡尔积中的元素(或者说凡符合元组语义的那部分元素)的全体就构成了该关系模式的关系。

现实世界随着时间在不断地变化,因而在不同的时刻,关系模式的关系也会有所变化。另外,现实世界的许多已有事实限定了关系模式所有可能的关系。这些关系必须满足一定的完整性,并通过属性值间的相互关系,例如课程的学时与学分应满足“(学时/学分)>=16”,反映出来。关系模式应当刻画出这些完整性约束条件。

定义2.4:关系的描述称为关系模式(RelationSchema)。它可以形式化地表示为

R(U,D,DOM,F)

其中:R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合。

属性间的数据依赖将在第4章讨论,而域名及属性向域的映像常常直接表示为属性的类型、长度。因此,在本章只讨论关系名(R)和属性名集合(U),将关系模式简记为

R(U)

R(A1,A2,…,An)

其中,R为关系名,A1,A2,…,An为属性名。

关系实际上是关系模式在某一时刻的状态或内容。也就是说,关系模式是型,关系是它的值。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。但在实际工作中,人们常常把关系模式和关系系统称为关系。读者可以从上下文中加以区别。

2.3.3关系数据库

在关系模型中,实体及实体间的联系都是用关系来表示。

关系数据库也有型和值之分。关系数据库的型称为关系数据库模式,是对关系数据库的描述,是关系模式的集合。关系数据库的值也称为关系数据库,是这些关系模式在某一时刻对应的关系的集合。关系数据库模式与关系数据库的值通常统称为关系数据库。

2.4关系的完整性

2.4.1实体完整性实体完整性规则:若属性(指一个或一组属性)

A是基本关系R(U)(A∈U)的主属性,则属性A不能取空值。

一个基本关系通常对应现实世界的一个实体集。例如,学生关系(Student)对应于学生集合。现实世界中的实体是可区分的,即它们具有某种唯一性标识。相应地,关系是以主码作为唯一性标识的。主码中的属性即主属性不能取空值。所谓空值就是“不知道”或“无意义”的值。

注意,关系的所有主属性都不能取空值,而不仅是主码不能取空值。

2.4.2参照完整性

现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述的。这样就自然存在着关系与关系间的引用。例如,学生、课程、学生与课程之间的多对多联系可以用下面的三个关系表示:

Student(sno,sname,sdept,sage);

Course(cno,cname,cpno,credit);

Sc(sno,cno,grade)。

这三个关系之间存在着属性的引用,即选课关系(Sc)引用了学生关系(Student)的主码“sno”和课程关系(Course)的主码“cno”。显然,选课关系中的“sno”值必须是确实存在的学生的学号,即学生关系中有该学生的记录;同理,选课关系中的“cno”值必须是确实存在的课程的编号,即课程关系中有该课程的记录。换句话说,选课关系中某些属性的取值需要参照其他关系相关属性的取值。

不仅两个或两个以上的关系间存在引用关系,而且同一关系内部属性间也可能存在引用关系。例如,在上述课程关系中,“cno”属性是主码,“cpno”属性表示该课程的先修课的课程编号,它引用了本关系的“cno”属性,即“cpno”必须是确实存在课程的课程编号。

定义2.5:设F是关系R的一个或一组属性,但不是R的码。如果F与关系S的主码KS相对应,则称F是关系R的外码或外键(ForeignKey),并称关系R为参照关系,关系S为被参照关系或目标关系。关系R和S不一定是不同关系。

显然,目标关系S的主码KS和参照关系R的外码F必须定义在同一个(或同一组)域上。

在上例中,选课关系的“sno”属性与学生关系的主码“sno”相对应;选课关系的“cno”属性与课程关系的主码“cno”相对应。因此,“sno”和“cno”属性是选课关系的外码。这里学生和课程关系均为被参照关系,选课关系为参照关系。

同理,课程中的“cpno”与本身的“cno”属性相对应,因此“cpno”为外码。而课程关系既是参照关系也是被参照关系。

需要指出的是,外码并不一定要与相应的主码同名,如课程关系的主码名(cno)与外码名(cpno)就不相同。不过,在实际应用中,为了便于识别,当外码与相应的主码属于不同关系时,往往给它们取相同的名字。

参照完整性规则就是定义外码与主码之间的引用规则。

参照完整性规则:若属性(或属性组)F是关系R的外码,它与关系S的主码KS相对应(R和S不一定是不同的关系),则对于R中每一个元组在F上的值必须为:空值(F的每个属性均为空值)或者等于S中某个元组的主码值。

例如,对于上例选课关系中的外码“sno”和“cno”属性的取值只能是空值或目标关系(学生和课程的关系)中已存在的值。但由于“sno”和“cno”又是选课关系的主属性,按照实体完整性规则,它们均不能取空值。所有选课关系中的“sno”和“cno”属性实际上只能取相应目标关系中已经存在的值。

参照完整性规则中,R与S可以是同一关系。如课程关系的外码“先修课号”,按照参照完整性规则,其取值可以为:空值,表示该课程的先修课还未确定;非空值,这时该值必须是本关系中某个元组的课程编号值。

2.4.3用户定义的完整性

实体完整性和参照完整性适用于任何关系数据库系统。除此之外,不同的关系数据库系统根据其应用环境不同,往往还需要一些特殊的约束条件。用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。

关系模型应提供定义和检查这类完整性的机制,以便用统一、系统的方法处理它们,而不需要由应用程序承担这一功能。

如定义学生考试成绩的取值范围在0~100之间,而年龄的取值只能在16到40岁之间等。它们可在定义关系结构时设置,还可通过触发器、规则等来设置。在开发数据库应用系统时,设置用户定义的完整性是一项非常重要的工作。

2.5关系代数

关系代数是一种抽象的查询语言,它是用关系的运算来表达查询,作为研究关系数据语言的数据工具。关系代数的运算对象是关系,运算结果亦为关系。关系代数用到的运算符包括四类:集合运算符、专门的关系运算符、比较运算符和逻辑运算符,如表2.5所示。

2.5.1传统集合运算

传统集合运算将关系看成是元组的集合,其运算是从关系的水平方向,即行的角度来进行。传统集合运算是两目运算,包括并、差、交、广义笛卡尔积四种。

1.并(Union)

设关系R和关系S具有相同的目n

(即两个关系都有n个属性),且相应的属性取自同一个域,则关系R和关系S的并由属于R或属于S的元组组成,其结果仍为n目关系。记为

R∪S

=

{t

|

t∈R∨t∈S}

例如,关系R与S的并运算如图2.1所示。

图2.1关系R与S的并运算

2.差(Difference)

设关系R和关系S具有相同的目n

(即两个关系都有n个属性),且相应的属性取自同一个域,则关系R和关系S的差由属于R而不属于S的元组组成,其结果仍为n目关系。记为

R

-

S

=

{t

|

t∈R∧tS}

例如,关系R与S的差运算如图2.2所示。

图2.2关系R与S的差运算

3.交(IntersectionReferentialIntegrity)

设关系R和关系S具有相同的目n

(即两个关系都有n个属性),且相应的属性取自同一个域,则关系R和关系S的交由属于R又属于S的元组组成,其结果仍为n目关系。记为

R∩S

=

{t

|

t∈R∧t∈S}

例如,关系R与S的交运算如图2.3所示。

图2.3关系R与S的交运算

4.广义笛卡尔积(ExtendedCartesianProduct)

两个分别为n目和m目的关系R和S的广义笛卡尔积是一个(n

+

m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1 × k2个元组。记为

R

× S

= {trts

|

tr∈R∧ts∈S}

其中:trts称为元组的连接。

例如,关系R与S的广义笛卡尔积运算如图2.4所示。

图2.4关系R与S的广义笛卡尔积运算

【例2.3】某商店有本店商品表R(见表2.6)和从工商局接到的不合格商品表S (见表2.7)。试求:

(1)该店中的合格商品表;

(2)该店内不合格的商品表。

第(1)问应该用集合差运算R-S

(见表2.8);第(2)问应该用集合交运算R∩S。结果如表2.9所示。

2.5.2专门的关系运算

专门的关系运算包括选择、投影、连接、除等。为了叙述方便,我们首先引入几个记号。

(1)分量:设关系模式为R(A1,A2,…,An),它的一个关系设为R。t∈R表示R的一个元组,t

[Ai]则表示元组t中对应于属性Ai的一个分量。

(2)属性列或属性组:若A = (Ai1,Ai2,…,Aik),其中Ai1,Ai2,…,Aik是A1,A2,…,An中的一部分,则A称为属性列或属性组。t [A] = (t [Ai1],t [Ai2],…,t [Aik])表示元组t在属性列A上诸分量的集合。则表示A1,A2,…,An中去掉Ai1,Ai2,…,Aik后剩余的属性组。

(3)元组的连接:R为n目关系,S为m目关系。tr∈R,ts∈S,trts称为元组的连接。它是一个(n

+

m)列的元组,前n个分量为R中的一个n元组(tr),后m个分量为S中的一个m元组(ts)。

(4)象集:给定一个关系R(X,Z),X和Z为属性组。我们定义,当t

[X] = x时,x在R中的象集为

ZX

=

{t

[Z]|t∈R,t[X]

=

x}

它表示R中属性组X上值为x的诸元组在Z上分量的集合。

例如:在图2.5中,

图2.5象集举例

1.选择(Selection)

选择又称为限制。它是在关系R中选择满足给定条件的元组,记为

σF(R)

=

{t

|

t∈R∧F(t)

=

'真'}

其中,F表示选择条件,它是一个逻辑表达式,取逻辑值“真”或“假”。

逻辑表达式F的基本形式为

X1θY1[φX2θY2

…]

θ表示比较运算符,θ =

{>,≥,<,≤,=,≠}。X1、Y1等是属性名、常量或简单函数。属性名也可以用它的序号来代替。φ表示逻辑运算符,φ={┐,∧,∨}。[ ]表示任选项,即[]中的部分可以要也可以不要,…表示上述格式可以重复下去。

【例2.4】求工商管理系MA的学生。

σSdept

=

‘MA’(S)或σ2

=

‘MA’(S)

运算结果如图2.6所示。

【例2.5】求计算机科学系CS,并且年龄不超过21岁的学生。

σSdept

=

' CS

'∧Sage≤21(S)

运算结果如图2.6所示。

图2.6选择运算

2.投影(Projection)

关系R上的投影是从R中选择若干属性列组成新关系。记为

πA(R)

=

{t

[A]|t∈R}

其中,A为R中的属性列,t

[A]表示元组t在属性列A上诸分量的集合。

投影操作是从列的角度进行的运算。

【例2.6】查询学生的姓名和年龄,即求学生关系S在学生姓名(Sname)和年龄(Sage)这两个属性上的投影。

πSname,Sage(S)

运算结果如图2.7所示。

图2.7投影运算

3.连接(Join)

关系R和关系S的连接运算是从两个关系的广义笛卡尔积中选取属性间满足一定条件的元组形成一个新关系。记为

其中,A和B分别为R和S上度数相等且可比的属性组,θ表示比较运算符。连接运算从R和S的笛卡尔积R

× S中选取R关系在A属性上的值与S关系在B属性组上的值满足比较关系θ的元组。

1)等值连接

θ为“=”的连接运算称为等值连接。关系R和S的等值连接是从R和S的广义笛卡尔积R × S中选取A与B等值的那些元组形成的关系。

2)自然连接

关系R和S的自然连接是一种特殊的等值连接,它要求关系R和S中进行比较的分量必须是相同属性组的一种连接,并且在结果中把重复的属性列去掉(只保留一个)。自然连接记为:R

S。

一般的连接运算是从行的角度进行的。但自然连接还需要取消重复列,所以自然连接是同时从行和列的角度进行运算的。

一般地,自然连接使用在R和S有公共属性的情况下。如果两个关系没有公共属性,那么它们的自然连接就转化为广义笛卡尔积。

已知R和S,则一般连接、等值连接和自然连接运算示例如图2.8所示。

图2.8连接运算

4.除运算(Division)

给定关系R(X,Y)和S(Y,Z),其中X、Y、Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合。记为

其中:Yx为x在R中的象集,x

=

tr[X]。

除操作是同时从行和列角度进行运算的。

已知关系R和S,则R

÷ S的结果如图2.9所示。

图2.9除运算

5.专门的关系运算举例

已知学生成绩数据库中有三个关系:

Student(sno,sname

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论