关系数据库
2.1关系数据结构及形式化定义
2.1.1关系
域:是一组具有相同数据类型的值的集合,属性的取值范围来自某个域。
元组:表中的一行。
属性:表中的一列(属性的个数称为元数)。
分量:元组中的一个属性值。
基数:一个域允许的不同取值个数称为这个域的基数。
关系模式:对关系的描述,关系名(属性1,……,属性n)(把记录类型称为关系模式)。
关系:一个关系对应通常说的一张表。
候选码/键(超键):在关系模式中,能惟一标识元组并且不含多余属性的属性集。
主码/键:在一个关系的若干个候选键中随意指定一个作为关键字,此关键字就是主键。
主属性:候选码的诸属性。
非主属性:不包含在任何候选码中的属性。
全码:关系模式的所有属性是这个关系模式的候选码。
关系的三种类型:基本关系(基本表或基表),查询表,视图表(虚表)。
基本关系的性质:列是同质的,即每一列中的分量是同一类型的数据;不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名;列的次序可以任意交换;任意两个元组的候选码不能取相同的值;行的次序可以任意交换;每一个分量都必须是不可分的数据项。(一个关系数据库文件中的各条记录前后顺序可以任意颠倒,不影响库中的数据关系)
2.1.2关系模式与关系数据库
关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的。关系数据库的型也称为关系数据模式,是对关系数据库的描述。关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。
2.2关系操作
2.2.1基本的关系操作
关系模型中常用的关系操作包括查询操作和插入、删除、修改操作。
查询操作:选择、投影、连接、除、并、差、交、笛卡尔积。
选择、投影、并、差、笛卡尔积是五种基本操作。
关系操作的特点是集合操作方式,即操作的对象和结果都是集合。
2.2.2关系数据语言的分类
常用的关系运算:关系代数、关系演算。
关系代数用对关系的运算来表达查询要求,关系演算则用谓词来表达查询要求。
关系演算:元组关系演算,域关系演算。
2.3关系的完整性
实体完整性:若属性(指一个或一组属性)A是基本关系R的主属性,则A不能取空值。
参照完整性:{设F是基本关系R的一个或一组属性,但不是关系R的码,K是基本关系S的主码。如果F与K相对应,则称F是R的外码,并称基本关系R为参照关系,基本关系S为被参照关系}。若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码K相对应(基本关系R和S不一定是不同的关系),则对于R中的每个元组在F上的取值必须或者取空值或者等于S中某个元组的主码值。
用户定义的完整性:针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。
(前两个被称作关系的两个不变性)
2.4关系代数
关系代数的运算对象和运算结果都是关系,运算符包括集合运算符和专门的关系运算符。
2.4.1传统的集合运算
传统的集合运算是二目运算:并、差、交、笛卡尔积
并:属性个数不变,由属于R或属于S的元组组成。
差:属性个数不变,由属于R而不属于S的所有元组组成。
交:属性个数不变,由既属于R又属于S的元组组成。R-(R-S)。
(并交差:两个关系的属性个数必须相等,相对应的属性值必须来自同一个域)
笛卡尔积:属性个数m+n,元组个数m*n。
2.4.2专门的关系运算
专门的关系运算:选择、投影、连接、除。
选择:又称限制,在关系R中选择满足给定条件的诸元组。
投影:从R中选择出若干属性列组成新的关系(投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组,因为取消了某些属性列后,就可能出现重复行,应取消这些完全相同的行)。
连接:从两个关系的笛卡尔积中选取属性间满足一定条件的元组。
等值连接:从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组(选相等属性值)。
自然连接:一种特殊的等值连接。要求两个关系中进行比较的分量必须是同名的属性组,并且在结果中把重复的属性列去掉(同时从行和列的角度进行运算)(相同属性组相同值)。(两个关系R和S在做自然连接时,选择两个关系在公共属性上值相等的元组构成新的关系,那些被舍弃的元组称为悬浮元组)
外连接:把悬浮元组也保存在结果关系中,而在其他属性上填空值。如果只保留左边关系R中的悬浮元组就叫做左外连接,如果只保留右边关系S中的悬浮元组就叫做右外连接。
象集:给定一个关系R(X,Z),X和Z为属性组。当t[X]=x时,x在R中的象集为R中属性组X上值为x的诸元组在Z上分量的集合。
除:T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中;元组在X上分量值x的象集Y包含在S在Y上投影的集合(求解查询全部的、所有的)。
(在数据库阶段,对数据的操作不一定以记录为单位,可以以关系为单位;关系数据库中可命名的最小数据单位是属性名)