一、关系数据结构及形式化定义
1、关系
关系模型的数据结构非常简单,只包含单一的数据结构——关系。在用户看来,关系模型中数据的逻辑结构是一张扁平的二维表。
1.1 域
域是一组具有相同数据类型值的集合。
1.2 笛卡儿积
笛卡儿积是域上的一种集合运算。
定义:给定一组域D1,D2,...,Dn,允许其中某些域是相同的,D1,D2,...,Dn的笛卡儿积为D1×D2×...Dn = {(d1,d2,...,dn)|di∈Di,i = 1,2,...,n}
每一个元素(d1,d2,...,dn)叫做一个元组,元素中的每一个值di叫做一个分量。
一个域允许的不同取值个数称为这个域的基数。若Di(i = 1,2,...,n)为有限集,其基数为mi(i = 1,2,...,n)。
笛卡儿积可表示为一张二维表,表中的每行对应一个元组,表中每一列的值来自一个域。
1.3 关系
定义:D1×D2×...×Dn的子集叫做在域D1,D2,...,Dn上的关系,表示为R(D1,D2,...,Dn)。这里R表示关系的名字,n是关系的目或度,关系中的每个元素是关系中的元组,通常用t表示。当n=1时,称该关系为单元关系或一元关系;当n=2时,称该关系为二元关系。
关系是笛卡儿积的有限子集,所以关系也是一张二维表,表的每行对应一个元组,表的每列对应一个域。由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性。n目关系必有n个属性。
若关系中的某一属性组的值能唯一的标识一个元组,而其子集不能,则称该属性组为候选码。若一个关系中有多个候选码,则选定其中一个为主码(primary key)。候选码的诸属性称为主属性。不包含在候选码中的属性称为非主属性或非码属性。简单的情况下,候选码只包含一个属性。最坏情况下,关系模式的所有属性是这个关系模式的候选码,称为全码。
一般来说,笛卡儿积是没有实际语义的,只有它的真子集才有实际含义。
⑴ 关系的三种类型
基本关系(基本表):是实际存在的表,是实际存储的逻辑表示;
查询表:查询结果对应的表;
视图表:是由基本一或其他视图表导出的表,是虚表,不对应实际存储的数据。
⑵ 关系的限定和扩充
① 无限关系在数据库系统中是无意义的,限定关系数据模型中的关系必须是有限集合;
② 通过为关系的每个列附加一个属性名的方法取消关系属性的有序性。
⑶ 基本关系具备的性质
① 列是同质的,每一列中的分量是同一类型的数据,来自同一个域;
② 不同的列可出自同一个域,称其中的每一个列为一个属性,不同的属性要给予不同的属性名;
③ 列的次序可以任意交换;
④ 任意两个元组的候选码不能取相同的值;
⑤ 行的次序可以任意交换;
⑥ 分量必须取原子值,每一个分量都必须是不可再分的数据项。
关系模型要求关系必须是规范化的,即要求关系必须满足一定的规范条件。规范化的关系称为范式。
2、关系模式
定义:关系的描述称为关系模式,它可以表示为R(U,D,DOM,F)。R是关系名,U为组成该关系的属性名集合,D为U中属性所来自的域,DOM为属性向域的映像集合(说明它们出自哪个域,常常直接说明为属性的类型和长度),F为属性间数据的依赖关系集合。
关系是关系模式在某一时刻的状态或内容,关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断的更新着数据库中的数据。
3、关系数据库
所有关系的集合构成一个关系数据库。
关系数据库也有型和值之分。关系数据库的型称为关系数据库模式,是对关系数据库的描述。关系数据库的值是这些关系模式在某些时刻对应的关系的集合,通常称作关系数据库。
4、关系模型的存储结构
表是关系数据的逻辑模型。
在关系数据库的物理组织中,有的一个表对应一个操作系统文件,将物理数据组织交给操作系统来完成;有的从操作系统那里申请若干个大的文件,自己划分文件空间,组织表、索引等存储结构,并进行存储管理。
二、关系操作
1、基本的关系操作
关系模型中常用的关系操作包括查询(query)操作和插入(insert)、删除(delete)、修改(update)操作两大部分。
查询操作又可以分为选择(select)、投影(project)、连接(join)、除(divide)、并(union)、差(except)、交(intersection)、笛卡儿积等。其中选择、投影、并、差、笛卡儿积是5种基本操作,其他操作可以用基本操作来定义和导出。
2、关系数据语言的分类
关系数据语言可以分为三类:关系代数语言(如ISBL),关系演算语言,具有关系代数和关系演算双重特点的语言(如SQL)。
2.1 关系代数语言
关系代数用对关系的运算来表达查询要求。
2.2 关系演算语言
关系演算用谓词来表达查询要求。它可按谓词变元的基本对象是元组变量还是域变量分为元组关系演算和域关系演算。
一个关系数据语言能够表示关系代数可以表示的查询,称为具有完备的表达能力,简称关系完备性。已经证明关系代数、元组关系演算和域关系演算三种语言在表达能力上是等价的,都具有完备的表达能力。
2.3 结构化查询语言
它是一种具有关系代数和关系演算双重特点的语言,是集查询、数据定义语言、数据操纵语言和数据控制语言于一体的关系数据语言。
三、关系的完整性
关系模型中有三类完整性约束:实体完整性、参照完整性和用户定义的完整性,其中实体完整性和参照完整性是关系数据模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。
1、实体完整性
1.1 实体完整性规则
若属性(一个或一组属性)A是基本关系R的主属性,则A不能取空值。
1.2 实体完整性规则说明
⑴ 一个基本表通常对应现实世界的一个实体集;
⑵ 实体在现实世界中是可区分的,它们具有某种唯一性的标识,关系模型中以主码作为唯一性标识;
⑶ 主码中的属性即主属性不能取空值。
2、参照完整性
2.1 参照完整性规则
若属性(一个或一组属性)F是基