1 关系数据结构及形式化定义
关系数据库是支持关系模型的数据库系统。
关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。
1.1 关系
关系模型单一的数据结构:关系
1.1.1关系数据结构的形式化定义
(1)域:一组具有相同数据类型的值的集合。
(2)笛卡尔积:域上的集合运算。
笛卡尔积可以表示为一个二维表,每行对应一个元组,每一列的值来自一个域。
一个域允许的不同取值个数称为基数。
(3)笛卡尔积的子集称为在域上的关系。
R(D1,D2,…Dn)R为关系名,n称为关系的目或度,n目关系必有n个属性。
n=1,称为单元关系或一元关系;n=2,称为二元关系。
关系中的每一个元素是关系中的元组,用t表示。
候选码:指能唯一标识一个元组,而其子集不能的某一属性组
主码:若一个关系中有多个候选码,则选定一个为主码
主属性:候选码的诸属性称为主属性
非主属性:不包含在任何主属性中的属性称为非主属性或非码属性
全码:在最简单的情况下,候选码只包含一个属性;最极端的情况下,关系中的所有属性都是候选码,称为全码
1.1.2关系的三种类型
(1)基本表(基表/基本关系):是实际存在的表,实际存储数据的逻辑表示
(2)查询表:查询结果对应的表
(3)视图表:基本表或其他视图导出的表,虚表,不对应实际存储的数据
1.2 关系模式
关系模式是对关系的描述。关系模式是型,关系是值。关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的;关系是动态的,随时间不断变化的。
R(U,D,DOM,F)
R是关系名
U是组成该关系的属性名集合
D是U中属性所来自的域
DOM是属性向域的映像集合
F是属性间数据依赖关系的集合
1.3 关系数据库
所有关系的集合构成一个关系数据库。
关系数据库的型称为关系数据库模式,是对关系数据库的描述。
关系数据库模式包括若干域的定义,以及在这些域上定义的若干关系模式。
关系数据库的值是这些关系模式在某一时刻对应的关系的集合。
1.4 关系模型的存储结构
在关系数据模型中,实体和实体之间的关系用表来表示,但表是关系数据的逻辑模型。
在关系数据库的物理组织中,有的关系数据库管理系统中,一个表对应一个操作系统文件,将物理数据组织交给操作系统完成;有的关系数据库管理系统从操作系统申请若干个文件,自己划分文件空间,组织表、索引等存储结构,并进行存储管理。
2 关系操作
2.1基本的关系操作
包括查询操作和插入、删除、修改操作两大部分
查询的基本操作:选择、投影、并、差、笛卡尔积
关系操作的特点:集合操作方式,操作的对象和结果都是集合。称为:一次一集合。
非关系数据模型的数据操作方式称为:一次一记录。
2.2 关系数据语言的分类
一个关系数据语言所能表示的关系代数能够表示的查询,称为具有完备的表达能力,简称关系完备性。关系代数和元组关系演算、域关系演算三种语言在表达能力上是等价的,都具有完备的表达能力,均是抽象的查询语言,能用作评估实际系统中查询语言能力的标准或基础。
具体的关系数据库关系中实现的实际语言具备丰富的功能:关系代数、关系演算、聚集函数、关系赋值、算术运算等。
结构化查询语言(SQL):
- 介于关系代数和关系演算之间。
- 具备丰富的查询功能,具有数据定义和数据控制功能,集查询、数据定义语言、数据操纵语言、数据控制语言于一体。
- 它充分体现了关系数据语言的特点和优点,是关系数据库的标准语言。
- 是一种高度非过程化的语言,用户不必请求数据库管理员为其建立特殊的存取路径,存取路径的选择由关系数据库管理系统的优化机制来完成。
3 关系的完整性
实体完整性、参照完整性是关系模型必须满足的完整性约束条件,是关系的两个不变性,由关系系统自动支持。
用户定义的完整性是应用领域需要遵守的约束条件,体现了具体领域中的语义约束。
3.1 实体完整性规则
意义:保证了关系数据库中每个元组都是唯一的、可区分的
规则说明:
- 实体完整性规则是针对基本关系而言的。一个基本表对应现实世界的一个实体集。例如学生关系对应学生的集合。
- 现实世界中的实体是可区分的,它们具有某种唯一性标识。例如每个学生都是独立的个体,是不一样的。
- 关系模式中以主码作为唯一性标识。
- 主属性不能取空值。
3.2 参照完整性
外码 / 参照关系 / 被参照关系
3.3 用户定义的完整性
是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。
4 关系代数
关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。
任何一种运算都是将一定的运算符作用在一定的运算对象上,得到预期的运算结果。所以运算的三大要素是:运算符、运算对象、运算结果。
关系代数的运算对象是关系,运算结果是关系,运算符分为集合运算符和关系运算符。逻辑运算符和比较运算符是用来辅助专门的关系运算符进行操作的。
4.1 集合运算
二目运算:并、差、交、笛卡尔积
4.2 关系运算
选择、投影、连接、除运算等。
4.2.1 选择 selection(Shift+F3)
选择,又称限制,是在关系R中选择满足给定条件的诸元组。
记作
( F表示选择条件,它是一个逻辑表达式,取逻辑值‘真’或‘假’。)
逻辑表达式F的基本形式
(θ表示逻辑运算符,X1Y1是属性名,为常量或简单函数,可由序号代替。)
在基本的选择条件上可以进一步进行逻辑运算,即与或非运算。
选择运算实际上是从关系R中选取使逻辑表达式F为真的元组,是从行的角度进行的运算。
例1.
例2.
4.2.2 投影 projecction
关系R上的投影是从R中选择出若干属性列组成新的关系,记作
其中A是R中的属性列
投影是从列的角度进行运算
4.2.3 连接 join
连接也称θ连接,它是从两个关系的笛卡儿积中选取属性间满足一定条件的元组,记作
A、B是R、S上列数相等且可比的属性组,θ是比较运算符。
连接运算从R和S的笛卡儿积RxS中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较关系θ的元组。
连接运算:等值连接equijoin、自然连接natural join。
θ为‘=‘的连接运算称为等值连接,它是从R与S的广义笛卡儿积中选取A、B属性值相等的那些元组。
自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是同名属性组,并且在结果中去掉重复属性列。
即若R和S中具有相同的属性组B,U为R和S的全体属性集合,记作
一般的连接操作是从列的角度进行运算,但自然连接还要取消重复列,所以是同时从行和列的角度进行运算。
悬浮元组:两个关系R、S做自然连接时,选择两个关系在公共属性上值相等的关系组成新的元组,关系R中某些元组有可能在关系S中不存在公共属性值相等的元组,从而造成这些元组在操作时被舍弃了;同样,S中有些元组也有可能被舍弃。这些被舍弃的元组称为悬浮元组。例如:(e)自然连接中,R中的第四个元组,S中的第五个元组都是被舍弃掉的悬浮元组。
如果把悬浮元组也保存在结果关系中,而在其他关系上填空值(NULL),这种连接称为
外连接(outer join),记作 。
左外连接 (left outer join),记作 。(只保留左边关系R中的悬浮元组)
右外连接 (right outer join),记作 。(只保留右边关系S中的悬浮元组)
4.2.4除运算(division)
设关系R除以关系S的结果为关系T,则T包括所有在R而不在S中的属性及其值,则T的元组和S的元组的所有属性都包含在R中。
4.2.5 复合运算
八种关系代数运算以并、差、笛卡尔积、选择、投影这五种运算为基础,其他三种运算交、连接、除均可以用这五种基本运算来表达。
关系代数中,这些运算经有限次复合后形成的表达式称为关系代数表达式。
5 关系演算
关系演算以数理逻辑中的谓词演算为基础。
按谓词变元的不同,分为元组关系演算和域关系演算。
5.1 元组关系演算关系 ALPHA
谓词变元的基本对象:元组变量。
5.2 域关系演算语言 QBE
谓词变元的基本对象:元组变量的分量,域变量。
小结
关系数据库是目前使用最广泛的数据库系统,在数据库1发展史上,最重要的成就之一是关系模型。
关系数据库和非关系数据库的区别:关系系统只有“表”一种数据结构,非关系数据库不止一种。
本章系统地讲解了关系数据库的概念:关系模型的数据结构、关系操作以及关系的三类完整性;介绍了以关系方式和逻辑方式来表达的关系语言,即关系代数、元组关系演算和域关系演算。