第 2章 关系数据库的基本理论学习要点
1,关系数据结构,关系操作和完整性约束
2,关系数据结构的数学定义
3,关系的性质,关系系统
4,实体完整性,参照完整性
5,用户定义的完整性
6,关系代数第 2章 关系数据库的基本理论
2.1 关系模型概述
2.2 关系数据结构
2.3 关系的完整性
2.4 关系代数第 2章 关系数据库的基本理论关系数据库系统具有独特的风格,概括起来有以下五个特点 。
( 1) 简单明了的数据模型 。
( 2) 具有严谨的理论基础 。
( 3) 实体表示方法和实体之间联系的表示方法一致 。
( 4) 处理多对多的联系方便 。
( 5) 使用的关系数据语言功能强大 。
2.1 关系模型概述关系模型是关系数据库的基础 。 关系模型由数据结构,关系操作集合和完整性约束三部分组成 。
2.1.1 关系数据结构关系模型的数据结构非常单一,在用户看来,关系模型中数据的逻辑结构是一张二维表 。 但关系模型的这种简单的数据结构能够表达丰富的语义,描述出现实世界的实体以及实体间的各种联系 。
2.1.2 关系操作关系操作采用集合操作方式,即操作的对象和结果都是集合 。 这种操作方式也称为一次一个集合的方式 。
关系模型中常用的关系操作有两类,一是查询操作,包括选择,投影,连接,除,并,
交,差等;二是增,删,改操作 。
表达(或描述)关系操作的关系数据语言可以分为三类,具体分类情况如下:
2.1.2 关系操作
( 1) 关系代数关系代数是用对关系的运算来表达查询要求的方式 。
( 2) 关系演算关系演算是用谓词来表达查询要求的方式 。
( 3) 介于关系代数和关系演算之间的语言 SQL
( Standard Query Language)
2.1.3 完整性约束关系模型提供了丰富的完整性控制机制,
允许定义三类完整性:实体完整性,参照完整性和用户定义的完整性 。 其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,应该由关系系统自动支持 。
2.2 关系数据结构因为关系模型是建立在集合代数的基础上的,所以本节从集合论角度给出关系数据结构的形式化定义 。
2.2.1 数学定义关系的理论基础是集合代数理论 。 关系通常用二维表来表示,现用集合代数给出关系的定义 。
2.2.1 数学定义
【 定义 2-1】 域 ( Domain) 是值的集合 。
例如,整数,实数,{ A,B,C},长度小于 15个字节的字符的集合,大于 0且小于 100的正整数等等都可以是域 。
在关系数据库中,域可以命名 。 例如:
姓名= { 张力,李红,王芳,刘吉 }
职称= { 高工,工程师,助工,技术员 }
X= { 男,女 }
其中,姓名,职称,X称为域名,姓名域和职称域各有 4个值,
X域有 2个值,一般称它们的基数分别为 4,4,2。
2.2.1 数学定义
【 定义 2-2】 给定一组域 D1,D2,…,Dn,则 D1× D2× … × Dn=
{ (d1,d2,…,dn)| d1∈ Di,i= 1,2,…,n} 称为 D1,D2,…,Dn的笛卡尔积 。 其中每个 (d1,d2,…,dn)叫做一个 n元组,元组中的每个 di是 Di域中的一个值,称为一个分量 。
若 Di (i=1,2,…,n)为有限集,其基数 ( Cardinal Number)
为 m i (i=1,2,…,n),则 D1× D2× … × Dn的基数为:
m=∏mi
其中,m=笛卡尔积的基数;
mi=第 i个域的基数;
n=域的个数 。
2.2.1 数学定义
【 定义 2-3】 给 定 一 组 域 D1,D2,…,Dn,则
D1× D2× D3的子集称为在 D1× D2× … × Dn上的关系 ( Relation),记做 R(D1,D2,…,Dn),
其中,R为关系名,n为关系 R的度 ( Degree)
或目 。
2.2.2 关系的性质数据库中的关系具有下列性质:
( 1) 任意两个元组 ( 即两行 ) 不能完全相同 。
( 2) 关系中元组 ( 行 ) 的次序是不重要的,可以任意交换 。
( 3) 属性 ( 列 ) 的次序也是不重要的,可以任意交换 。
( 4) 同一列中的分量必须来自同一个域,是同类型的数据 。
( 5) 属性必须有不同的名称,但不同的属性可以出自相同的域,即它们的分量可以取值于同一个域 。
2.2.3 单一的数据结构 —— 关系在关系模型中,无论是实体还是实体之间的联系均由单一的结构类型即关系来表示 。 前面已经给出了域的数学定义,介绍了 n目关系,元组,属性等概念,
下面介绍键,关系模式,关系数据库等基本概念 。
1,键关系中的某一属性组,若它的值惟一地标识一个元组,则称该属性组为候选键 ( Candidate Key) 。
若一个关系有多个候选键,则选定其中一个为主键 ( Primary Key) 。 主键的诸属性称为主属性 。
2.2.3 单一的数据结构 —— 关系
2,关系模式关系的描述称为关系模式,它包括关系名,
组成该关系的诸属性名,属性向域的映像,属性间的数据依赖关系等 。 本节讨论的关系模式仅由关系名,诸属性名和属性向域的映像三部分组成 。 通常记为 R(D1,D2,…,Dn)。 R为关系名,D1,D2,…,Dn为属性名 。 属性向域的映像常用属性的类型,长度来说明 。
2.2.3 单一的数据结构 —— 关系
3,关系数据库对于关系数据库要分清型和值的概念 。 关系数据库的型即数据库描述,它包括若干域的定义以及在这些域上定义的若干关系模式;数据库的值是这些关系模式在某一时刻对应的关系的集合 。 数据库的型亦称为数据库的内涵 ( Intention),数据库的值亦称为数据库的外延 ( Extention) 。
关系模式是稳定的,而关系是随时间不断变化的,
因为数据库中的数据在不断更新 。
2.2.4 关系系统关系系统和关系模型是两个密切相关而又不同的概念 。 支持关系模型的数据库管理系统称为关系系统 。 但是关系模型中并非每一部分都是同等重要的,所以不苛求完全支持关系模型的系统才能称为关系系统 。 因此,下面给出一个关系系统的最小要求以及分类的定义 。
2.2.4 关系系统
1,关系系统的定义一个系统可定义为关系系统,当且仅当它满足以下两个条件:
( 1) 支持关系数据库 ( 关系数据结构 ) 。
( 2) 支持选择,投影和 ( 自然 ) 连接运算,对这些运算不必要求定义任何物理存取路径,不要求关系系统的选择,投影,连接运算和关系代数的相应运算完全一样,而只要求有等价的这三种运算功能 。
2.2.4 关系系统
2,关系系统的分类按照 E.F.Codd的思想,可以把关系系统分类如下:
( 1) 最小关系系统
( 2) 关系上完备的系统
( 3) 全关系系统
2.2.4 关系系统
3,全关系系统的 12条基本准则
【 准则 2-0】 一个关系型的 DBMS必须能完全通过它的关系能力来管理数据库 。
【 准则 2-1】 信息准则 。
【 准则 2-2】 保证访问准则 。
【 准则 2-3】 空值的系统化处理 。
【 准则 2-4】 基于关系模型的动态的联机数据字典 。
【 准则 2-5】 统一的数据子语言准则 。
2.2.4 关系系统
【 准则 2-6】 视图更新准则 。
【 准则 2-7】 高级的插入,修改和删除操作 。
【 准则 2-8】 数据物理独立性 。
【 准则 2-9】 数据逻辑独立性 。
【 准则 2-10】 数据完整性的独立性 。
【 准则 2-11】 分布独立性 。
【 准则 2-12】 无破坏准则 。
2.3 关系的完整性关系模型的完整性规则是对关系的某种约束条件 。 关系模型中可以有三类完整性约束:实体完整性,参照完整性和用户定义的完整性 。
2.3.1 实体完整性 ( EntityIntegrity)
一个基本关系通常对应现实世界的一个实体集 。 例如学生关系对应于学生的集合 。 现实世界中的实体是可区分的,即它们具有某种惟一性标识 。 相应地,关系模型中以主键作为惟一性标识 。 主键中的属性即主属性不能取空值 。
【 规则 2-1】 实体完整性规则:若属性 A是基本关系 R的主属性,则属性 A不能取空值 。
2.3.2 参照完整性 ( Referential Integrity)
现实世界中的实体之间往往存在某种联系,在关系模型中实体与实体间的联系都是用关系来描述的 。 这样就自然存在着关系与关系间的引用 。
【 定义 2-4】 设 F是基本关系 R的一个或一组属性,但不是关系 R
的键,如果 F与基本关系 S的主键 KS相对应,则称 F是基本关系
R的外键 ( Foreign Key),并称基本关系 R为参照关系
( Referencing Relation ),基本关系 S 为被参照关系
( Referenced Relation) 或目标关系 ( Target Relation) 。
关系 R和 S不一定是不同的关系 。
参照完整性规则就是定义外键与主键之间的引用规则 。
2.3.2 参照完整性 ( Referential Integrity)
【 规则 2-2】 参照完整性规则:若属性 ( 或属性组 ) F是基本关系 R的外键,它与基本关系
S的主键 KS相对应 ( 基本关系 R和 S不一定是不同的关系 ),则对于 R中每个元组在 F上的值必须为:或者取空值 ( F的每个属性值均为空值 ),
或者等于 S中某个元组的主键值 。
2.3.3 用户定义的完整性 ( User-definedIntegrity)
实体完整性和参照完整性适用于任何关系数据库系统 。 除此之外,不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件,用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求 。 关系模型应提供定义和检验这类完整性的机制,
以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能 。
2.4 关系代数关系运算是用来表达查询的语言,根据所依据的理论基础的不同分为两类,分别称为关系代数语言和关系演算语言 。 关系代数语言是以集合运算为基础的语言,关系演算语言是以谓词演算为基础的语言 。
( 1) 并 ( Union)
设 R和 S为 n元关系 (,n元,指关系模式中属性的数目为
n),并且两者对应属性的数据类型也相同 。 则 R和 S的并记为:
R∪ S={t∣ t∈ R∨ t∈ S}
结果由属于 R和属于 S的元组组成,仍为 n元关系 。
2.4 关系代数
( 2) 交 ( Intersection)
设 R和 S为 n元关系,并且两者对应属性的数据类型也相同 。
则 R和 S的交记为:
R∩ S={t∣ t∈ R∧ t∈ S}
结果由既属于 R又属于 S的元组组成,仍为 n元关系 。
( 3) 差 ( Difference)
设 R和 S为 n元关系,并且两者对应属性的数据类型也相同 。
则 R和 S的差记为:
R-S={t∣ t∈ R∧ t ∈ S}
结果由属于 R而不属于 S的元组组成,仍为 n元关系 。
2.4 关系代数
( 4) 笛卡尔积 ( Product)
设 R为 n元关系,S为 m元关系,R和 S的笛卡尔积是一个 n+m列的元组的集合 。 其中,任意一个元组的前 n列是关系 R的一个元组,后 m列是关系 S的一个元组 。 并且,若 R中由 k1个元组组成,S由 k2个元组组成,
则 R和 S的笛卡尔积由 k1× k2 个元组组成 。 R和 S的笛卡尔积记为:
R× S={(r1,…,rn,s1,…,sm)∣ ((r1,…,rn)∈ R∧ (s1,…,s
m)∈ S)
2.4 关系代数
( 5) 选择 ( Selection)
选择操作的含义是在关系上选择满足某种条件的元组 。 设关系 R为 n元关系,用 F来表示选择条件,F形如 r iθC( 其中 θ为算术运算符 =、
≠,>,<,≤,≥或逻辑运算符 ∧,∨,(、
┐ ),F的取值为逻辑值,true”或,false”。 R
关系的选择操作记为:
σF (R)={t|t∈ R∧ F(t)=true}
选择的结果为关系 R中满足条件 F的元组 。
2.4 关系代数
( 6) 投影 ( Projection)
投影操作是选取关系的某些列做垂直投影,
并可重新安排列的顺序 。 设关系 R为 n元关系,
R的投影操作记为:
,…?,(R)={(r,… r,)|( r1,…,,…,,…,rn)∈ R}
例如?1,3(R)表示选取关系 R中的第 1列和第
3列组成新的关系 。 另外,列号的位置也可用对应的属性名代替 。
2.4 关系代数
( 7) 连接 ( Join)
连接运算是从关系 R和 S的笛卡尔积中选取属性间满足一定条件的元组 。 记为:
RA?B S={trts|tr∈ R∧ ts∈ S∧ tr[A]?ts[B]=T}
其中 A和 B分别为 R和 S上可比的属性或属性组,tr [A]表示元组 t中对应于属性 A的一个分量 。 连接运算的含义是指在 R× S中选择 A和 B
满足?关系的元组,θ∈ {=,≠,>,<,≥,≤}。
2.4 关系代数
( 8) 除 ( Division)
为了更清楚地描述,除,,首先介绍,象集,的概念 。
象集:设关系 R(X,Z),X和 Z为属性组,当 t[X]=x时,x
在 R中的象集为:
Z x={t[Z]∈ R,t[X]=x}
除:设关系 R(X,Y)和 S(Y,Z),其中 X,Y,Z为属性组 。 R中的 Y与 S中 Y可以有不同的属性名,但必须出自相同的集合 。 R与 S的除运算得到一个新的关系,新关系为 R中满足下列条件的元组在属性列 X上的投影 。
2.4 关系代数元组在 X上的分量值 x的象集 Yx包含 S在 Y
上的投影的集合 。 记为:
R÷ S={tr [X]|tr∈ R∧?y(S)?Yx}
其中,Yx为 x在 R中的象集,x=tr[X]。
习 题
1,选择题
( 1) 关系代数是用对 __________的运算来表达查询要求的方式 。
A,实体 B,域 C,属性 D,关系
( 2) 关系演算是用 __________来表达查询要求的方式 。
A,关系 B,谓词 C,代数 D,属性
( 3) 域是一组具有相同数据类型的 __________的集合 。
A,值 B,实体 C,属性 D,关系
( 4) 基本关系中,任意两个元组值 __________。
A,可以相同 B,必须完全相同 C,必须全不同 D,不能完全相同
( 5) 实体完整性规则为:若属性 A是基本关系 R的主属性,则属性
A__________。
A,可取空值 B,不能取空值 C,可取某定值 D,都不对习 题
2,填空题
( 1) 关系模型由 __________,__________和 __________
三部分组成 。
( 2) 关系操作采用 __________操作方式,即操作的对象和结果都是 __________。
( 3 ) 关 系 模 型 中 常 用 的 关 系 操 作 包 括 __________ 和
__________两类 。
( 4 ) 关系代数,元 组 关 系 演 算 和 域 关 系 演 算 是 抽 象 的
__________。
( 5) SQL不仅具有丰富的查询功能,而且具有 __________和
__________功能,是 __________的标准语言 。
习 题
( 6 ) 关系模型允 许定义 __________,__________ 和
__________三类完整性 。
( 7 ) 关系是 __________ 的 子 集,所 以 关 系 也 是 一 个
__________。
( 8) 关系模型是静态的稳定的,而关系是 __________,因为关系操作在不断地更新着数据库的数据 。
( 9 ) 关系系统可分为 __________,__________ 和
__________三类 。
( 10) 一个基本关系通常对应现实世界的一个 __________。
参考答案
1、( 1) D ( 2) B ( 3) A ( 4) C ( 5) B
2、( 1)数据结构、关系操作、完整性约束条件
( 2)集合、集合
( 3)查询操作、增删改操作
( 4)查询语言
( 5)数据定义、数据控制、关系数据库
( 6)实体完整性、参照完 整性、用户定义的完整性
( 7)笛卡儿积、二维表
( 8)动态的、随时间变化不断的
( 9)最小关系系统、关系上完备的系统、全关系系统
( 10)实体集