一、关系数据模型和关系数据库
1.数据结构
关系数据模型源于数学,它用二维表来组织数据,而这个二维表在关系数据库中就称为关系。关系数据库就是表或者说是关系的集合。
2.数据操作
传统的关系运算:并(union)、交(intersection)、差(difference)、广义笛卡尔乘积(extended cartesian product)。
专门的关系运算:选择(select)、投影(project)、连接(join)、除(divide)。
有关的数据操作:查询(query)、插入(insert)、删除(delete)和更改(update)。
3.数据完整性约束
在数据库中数据的完整性是指保证数据准确性的特征。数据完整性是一种语义概念,它包含二个方面:
(1)与现实世界中应用需求的数据的相容性和正确性。
(2)数据库内数据之间的相容性和正确性。
数据完整性由一组完整性规则定义,二关系模型的完整性规则是对关系的某种约束条件。在关系数据模型中一般将数据完整性分为三类:实体完整性、参照完整性、用户定义的完整性。
二、关系模型的基本术语与形式化定义
基本术语:
1.关系
关系就是二维表,二维表的名字就是关系的名字。
2.属性
二维表的每个列称为一个属性,每个属性(或叫字段)有一个名字,称为属性名。二维表中对应某一列的值称为属性值,二维表中列的个数称为关系的元数。如果一个二维表有n个列,则称其为n元关系。
3.值域
二维表中属性的取值范围称为值域。
4.元组
二维表中的一行数据称为一个元组。
5.分量
元组中的每一个属性值称为元组的一个分量,n元关系的每个元组有n个分量。
6.关系模式
二维表的结构称为关系模式,或者说,关系模式就是二维表的表框架或表头结构。设有关系名为R,属性分别为A1,A2,...,An,则关系模式可以表示为:
R(A1,A2,...,An)
7.关系数据库
对应于一个关系模型的所有关系的集合称为关系数据库。
8.候选键
如果一个属性或属性集的值能唯一标识一个关系的元组而又不包含多余的属性,则称属性或属性集为候选键。
候选键又称为候选关键字或候选码。在一个关系上可以有多个候选键。
9.主键
当一个关系中有多个候选键时,可以从中选择一个作为主键。每个关系只能有一个主键。
主键也称为主码或主关键字,是表中的属性或属性组,用于唯一地确定一个元组。主键可以由一个属性组成,也可以由多个属性共同组成。我们称由多个属性共同组成的主键为复合主键。当某个表是由多个属性共同作主键时,我们就用括号将这些属性括起来,表示共同作为主键。
10.主属性和非主属性
包含在任一候选键中的属性称为主属性,不包含在任一候选键中的属性称为非主属性。
形式化定义
1.关系的形式化定义
首先定义笛卡尔积:
设D1,D2,....Dn为任意集合,定义笛卡尔积D1,D2,....Dn为:
D1XD2X,X....XDn={(d1,d2,....dn)|di∈Di,i=1,2,...,n}
其中每一个元素(d1,d2,....dn)称为一个n元组,简称元组。元组中每一个di称为是一个分量
2.对关系的限定
(1)关系中的每个分量都必须是不可再分的最小属性。
(2)表中列的数据类型是固定的,即列中的每个分量都是同类型的数据,来自相同的值域。
(3)不同列的数据可以取自相同的值域。
(4)关系表中列的顺序不重要。
(5)行的顺序也不重要。
(6)同一个关系中的元组不能重复。
三、关系代数
1.传统的集合运算
(1)并运算
设关系R与关系S均是n目关系,关系R与关系S的并记为:
RUS={t|t∈Rt∈S}
其结果仍是n目关系,由属于R或属于S的元组组成。
(2)交运算
设关系R与关系S均是n目关系,关系R与关系S的并记为:
RS={t|t∈Rt∈S}
其结果仍是n目关系,由属于R也属于S的元组组成。
(3)差运算
设关系R与关系S均是n目关系,关系R与关系S的并记为:
R-S={t|t∈Rt∉S}
其结果仍是n目关系,由属于R并且不属于S的元组组成。
(4)广义笛卡尔积
二个分别为m目和n目的关系R和关系S的广义笛卡尔积是一个有(m+n)个列的元组的集合。元组的前m个列是关系R的一个元组,后n个列是关系S的一个元组。若R有K1个元组,S有K2个元组,则关系R和关系S的广义笛卡尔积有K1XK2个元组,记为:
RXS={tr^ts|tr∈Rts∈S}
其中,tr^ts表示由二个元组tr和ts前后有序连接而成的一个元组。
2.专门的关系运算
(1)选择:
是从指定的关系中选出满足给定条件的元组而组成一个新的关系。
选择运算表示为:f(R)={t|t∈ RF(t)=true}
(2)投影
是从关系R中选取若干属性,并用这些属性组成一个新的关系。
投影运算表示为:A(R)={t.A|t∈ R}
步骤:选取出指定的属性,形成一个可能含有重复行的新关系;
删除重复行,形成结果关系。
(3)连接
连接运算用来连接相互之间有联系的二个关系,从而产生一个新的关系。
连接运算主要有如下几种形式:
连接;
等值连接;
自然连接;
外部连接;
半连接。
自然连接与等值连接的区别:
自然连接要求相等的分量必须有共同的属性名,等值连接则不要求;
自然连接要求把重复的属性名去掉,等值连接却不这样做。
外连接:左外连接、右外连接、全外连接。
左外连接(R*S):把连接符号左边的关系中不满足连接条件的元组也保留到连接后的结果中,并在连接结果中将该元组所对应的右边关系的各个属性均置为空值(NULL)。
右外连接(R*S):把连接符号右边的关系中不满足连接条件的元组也保留到连接后的结果中,并在连接结果中将该元组所对应的左边关系的各个属性均置为空值(NULL)。
全外连接( R**S):把连接符号两边的关系中不满足连接条件的元组也保留到连接后的结果中,并在连接结果中将不满足连接条件的各元组的相关属性均置为空值(NULL)。
(4)除
设关系S的属性是关系R的属性的一部分,则R÷S为这样一个关系:
此关系的属性是由属于R但不属于S的所有属性组成;R÷S的任一元组都是R中某元组的一部分。
除法的一般形式:
设有关系R(X,Y)和S(Y,Z),其中X、Y、Z为关系的属性组,则:
R(X,Y)÷S(Y,Z)=R(X,Y)÷Y(S)
象集:给定一个关系R(X,Y),X和Y为属性组。定义:当t[X]=x时,x在R中的象集为:
Yx ={t[Y]|t∈Rt[X]=x}
式中,t[Y]和t[X]分别表示R中的元组t在属性组Y和X上的分量的集合。