1.传统的运算关系:并(union)、交(intersection)、差(difference)、广义迪卡尔积(extended cartesian product)。
专门的关系运算:选择(select)、投影(project)、连接(join)、除(divide)。
有关的数据操作:查询(query)、插入(insert)、删除(delete)、更改(update)。
2.数据完整性约束
在数据库中数据的完整性是指保证数据正确的特征,数据完整性是一种语义概念,它包括两个方面:
1.与现实世界中应用需求的数据的相容性和正确性。
2.数据库内数据之间的相容性和正确性。
3.基本术语
关系(表)
通俗地讲,关系(relation)就是二维表,二维表的名字就是关系的名字。
属性(列)
二维表中的每一个称为属性(attribute),没一个属性有一个名字,称为属性名。n列就是n元。
值域(取值范围)
二维表中属性的范围称为值域(domain)。如性别只能‘男’或‘女’。
元组(行)
二维表中的一行数据称为一个元组(tuple)。
分量(元组中每个属性的值)
元组中的没一个属性值称为元组的一个分量(component),n元关系的每个元组有n个分量。
关系模式(表结构、表头)
二维表的结构称为关系模式(relation schema),或者说关系模式就是二维表的表框架或表头结构。设有关系名R,属性分别是a、b、c、d,则关系模式可以表示为:R(a,b,c,d)。如果将关系模式理解为数据类型,则关系就是该数据类型的一个具体值。
关系数据库
对应于一个关系模型的所有关系的集合称为关系数据库(relation database)。
候选键
如果一个属性或属性集(可以有多个候选键)的值能够唯一标识一个关系的一个元组而又不包含多余的属性,则称该属性或属性集为候选键(candidate key),如学号、身份证。候选键又称为候选关键字或候选码。
主键
当一个关系中有多个候选键时,可以从中选择一个作为主键(primary key)。每个关系只能有一个主键。主键也称为主码或关键字,是表中的属性或属性组,用于唯一地确定一个元组。
主属性与非主属性
包含在任意候选键中的属性称为主属性(primary attribute);不包含任一候选键的属性为非主属性(nonprimary attribute)。
对关系的限定
关系可以看成二维表,但并不是所有二维表都是关系。关系数据库对关系有一些限定,如:
关系中的每个分量都必须是不可再分的最小数据。
表中列的数据类型是固定的,即列中的内一个分量都是相同类型的数据,来自相同的值域。
不同列的数据可以取自相同的值域,每个列称为一个属性,每个属性有不同的属性名。
关系表中列的顺序不重要,即列的次序可以任意交换,不影响其表达的语义。
行的顺序也不重要,交换行数据的顺序也不影响其内容。
同一个关系中的元组不能重复,即在一个关系中,不能有两个元组的值完全相同相同。
关系代数
关系代数是关系操作语言的一种传统的表示方式,它是一种抽象的查询语言,是一种单次关系(或者说是集合)语言。包括运算对象、运算符和运算结果。
关系代数可分为两大类:
传统集合运算:这类运算完全把关系看作元组的集合,包括广义迪卡尔积运算、并运算、交运算、差运算。
专门的关系运算:这类关系除了把关系看作元组的集合以外,还通过运算表达了查询的要求,包括选择、投影、连接、除运算。
传统关系运算
1.并运算
设关系只与S均是n目关系,关系尺与S的并记
为:
R∪S={t∣t∈R∨t∈S}
其结果仍是n目关系,由属于R或S的元组组成。
2. 交运算
设关系R与S均为n目关系,关系尺与S的交记
为:
R∩S={t∣t∈R∧t∈S}
其结果仍是n目关系,由属于R也属于S的元组组
成。
3.差运算
R−S={t∣t∈R∧t∈ / S}
设关系R与S均为n目关系,关系R与S的差运算
其结果仍是n目关系,由属于R且不属于S的元组组成。
广义迪卡尔积
广义迪卡尔积不要求参加运算的两个关系具有相同的目数。
两个分别为m目和n目的关系R和S的广义迪卡尔积是一个有 m+n 个列的元组的集合。元组的前m列是关系R的一个元组,后n个是关系S的一个元组。若R有K1个元组,S有K2个元组,则R和S的广义迪卡尔积有 K1*K2个元组,记为:R×S={ t r t s ^∣t r ∈R∧t s∈S}
其中, t r t s ^表示有两个元组前后有序连接成的一个元组。
专门的关系运算
选择
投影
连接
θ连接
等值连接
自然连接
外部连接
半连接
除
除法的一般形式
设关系R(X,Y)和S(Y,Z),其中X、Y、Z为关系的属性组,则:R ( X , Y ) ÷ S ( Y , Z ) = R ( X , Y ) ÷ ∏ Y ( S )