第4章_关系数据模型及其运算基础
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章 关系数据模型及其运算基础
在本课程的1.2.3节中已经介绍了关系模型。关系模型是由:关系数据模型结构—表、关系操作集合和关系的三类完整性约束组成的。
其中表和三类完整性已作了详细的介绍。关系的操作也通过对SQL 语言的学习,有了大致的了解。
评价实际关系语言的理论是关系代数和关系演算。实际的关系语言,有的是基于关系代数的,有的是基于关系演算的,有的是介于两者之间的,我们前面学习过的结构化查询语言SQL 就是介于关系代数和关系演算之间的一种关系语言。
关系演算又分为元组关系演算和域关系演算两种。理论已证明关系代数、元组关系演算和域关系演算三者是等价的。
本章重点介绍的是关系代数,对元组关系演算和域关系演算只作一般性介绍。
4.1 关系模型的基本概念
关系操作是集合操作,操作的对象是集合,操作的结果也是集合。因此,关系操作的基础是集合代数。
4.1.1 笛卡尔积(Cartesian Product )
1、域(Domain ):域是一组具有相同数据类型的值的集合。
例如:自然数、整数、实数、长度小于8的字符串等都可以是域。
2、笛卡尔积:
给定一组域D1,D2,…,Dn ,这些域中可以有相同的元素。D1,D2,…,Dn 的笛卡尔积为:
(){}n i D d d d d i i n ,,2,1,|,,,D D D 21n 21 =∈=⨯⨯⨯
其中:
✧ 每一个元素()n d d d ,,,21 叫作一个n 元组(n-tuple )或简称元组(Tuple );
✧ 元组中的每一个值i d 叫作该元组在相应域Di 上的一个分量(Component );
✧ 每一个元组是组成该元组各分量的有序集合(强调各分量的有序性);
✧ 若()n i D i ,,2,1 =为有限集,其基数(Cardinal number )为()n i m i ,,2,1 =,则
n D D D ⨯⨯⨯ 21的基数M 为: ∏==n
i i m M 1=m 1×m 2×…×m n
✧ 基数即集合中元素的个数;
✧ 笛卡尔积实际上就是一个二维表。表中每一行对应一个元组,每列对应一个域。
参看P65例4.1
4.1.2 关系(Relation )
笛卡尔积n D D D ⨯⨯⨯ 21的任意一个子集,称为在域D1,D2,…,Dn 上的一个n 元关系,简称关系,又称为表。每个关系都有一个名字称为关系名。
关系是笛卡尔积的一个子集,所以关系也是一个二维表。
二维表:表 名、列、 列 名、表中一行、
关 系:关系名、属性、属性名、一个元组、
以上是二维表与关系的对应关系。
一个属性的取值范围Di (i =1,2,…n )称为该属性的域(Domain )。不同的属性可以有相同的域。
从第2章可见,实际的关系有三种类型:基本表、查询表和视图表。其中
✧ 基本表是实际存在的表;
✧ 查询表是查询结果对应的表;
✧ 视图表是从基本表和/或已定义的视图中导出的表,是虚表,只有存放在数据库中的定
义,而实际上不存在。
关系的其它术语,如主码、主属性、外部码等在1.2.3节中已经作了详述,在此不再重复。
4.2 关系模式
前已学过,一个关系的关系模式是该关系的关系名及其全部属性名的集合,一般表示为:
关系名(属性名1,属性名2,…,属性名n)
可见:
✧关系模式是型,是对关系的描述。关系是值,是关系模式的具体体现;
✧关系模式是稳定的。关系是变化的,关系是某一时刻关系模式的内容。
完整的关系模式应该定义为:R(U, D, dom, F)其中:
R为关系名;U为该关系所有属性名的集合;D为属性组U中属性所来自的域的集合;Dom为属性向域映象的集合;F为属性间数据依赖关系的集合。
关系模式常简记为:R(U)或R(A1,A2,…,An)
其中:R为关系名,Ai(i=1,2,…,n)为属性名。域名及属性向域的映象一般即为定义中属性的类型和长度。
4.3 关系数据库
关于关系数据库,记住以下三点:
✧一个应用范围内,所有关系的集合就形成了一个关系数据库。
✧对关系数据库的描述称为关系数据库的模式,也称为关系数据库的型。
✧全部关系模式在某一时刻的值的集合即全部关系的集合为关系数据库的值,简称为关系
数据库。
关于关系数据库的其它概念我们将在以后的学习中逐渐领会。
4.4 关系代数
关系代数运算的对象是关系,运算的结果也是关系。
关系代数的运算可分为传统的集合运算和专门的关系运算两类。
关系代数用到的运算符包括四类:
✧集合运算符:并(∪)、差(-)、交(∩)和广义的笛卡尔积(×)
✧专门的关系运算符:投影(π)、选择(σ)、连接(∞)和除(÷)
✧比较运算符:>、≥、<、≤、=、≠
✧逻辑运算符:∨(或)、∧(与)、(非)
后两种运算符是用来辅助前两种运算符进行操作的。
4.4.1 传统的集合运算
传统的集合运算是二目运算。设关系R和S的目都是n(都有n个属性),且相应的属性取自同一域,则
1、关系R和S的并(Union)为:R S={t | t ∈R∨t∈S}
含义:任取元组t,当且仅当t属于R或t属于S时,t属于R∪S。R∪S是一个n目关系。
2、R和S的差(Difference)为:R-S={t | t ∈R∧t∉S}
含义:当且仅当t属于R并且不属于S时,t属于R-S。R-S也是一个n目关系。
3、R和S的交(Intersection)为:R∩S={t | t ∈R∧t∈S}
含义:当且仅当t属于R又属于S时,t∈R∩S。
4、广义笛卡尔积:(Extended Cartesian Product)
广义笛卡尔积不要求参加运算的两个关系具有相同的目。
设R为n目关系,S为m目关系,则R和S广义笛卡尔积为
R×S={t r^t s | t r∈R ∧t s∈S}
t r^t s表示由两个元组t r和t s前后有序连接而成的一个元组。
任取元组t r和t s,当且仅当t r属于R且t s属于S时,t r和t s的有序连接即为R×S的一个元组。R和S的广义笛卡尔积是一个(n+m)目的关系。其中任何一个元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有K1个元组,S有K2个元组,则R×S有K1×K2个元组。
实际操作时,可从R的第一个元组开始,依次与S的每一个元组组合,然后,对R的下一个元组进行同样的操作,直至R的最后一个元也进行同样的操作为止。即可得到R×S的全部元组。
4.4.2 专门的关系运算
专门的关系运算包括:投影、选择、连接、自然连接和除等操作,其中前两者为一元操作,后三者为二元操作。
1、投影(Projection)
表示格式:∏<属性名表>(R)
式中:<属性名表>中的所有属性都是关系R的属性,其中属性名也可以用属性在原关系中的序号代替。
R:关系名,即表名。
表示原关系R中各元组只保留<属性名表>中的诸分量后形成的新的关系。