关系数据模型
关系数据模型
关系模型由关系模型的数据结构、关系模型的操作集合和关系模型的完整性约束三部分组成,这三部分也称为关系模型的三要素。
数据结构
关系数据模型源于数学,它用二维表来组织数据,而这个二维表在关系数据库中称为关系。关系数据库就是表或者说是关系的集合。
数据操作
关系数据模型给出了关系操作的能力,包括。
传统的运算关系:并(union)、交(intersection)、差(difference)、广义迪卡尔积(extended cartesian product)。
专门的关系运算:选择(select)、投影(project)、连接(join)、除(divide)。
有关的数据操作:查询(query)、插入(insert)、删除(delete)、更改(update)。
关系模型中的操作对象是集合(或表),而不是单个数据行,也就是说,关系模型中操作的数据以及操作的结果都是完整的集合(或表),这些集合可以只包含一行数据,也可以不包含任何数据。
完整性约束
在数据库中数据的完整性是指保证数据正确的特征,数据完整性是一种语义概念,它包括两个方面:
与现实世界中应用需求的数据的相容性和正确性。
数据库内数据之间的相容性和正确性。
完整性约束在关系型数据库中一般分为三类,实体完整性(主键)、参照完整性(外建)、用户定义完整性。
关系型数据库的基本术语
基本术语
关系(表)
通俗地讲,**关系(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.关系中的每个分量都必须是不可再分的最小数据。
2.表中列的数据类型是固定的,即列中的内一个分量都是相同类型的数据,来自相同的值域。
3.不同列的数据可以取自相同的值域,每个列称为一个属性,每个属性有不同的属性名。
4.关系表中列的顺序不重要,即列的次序可以任意交换,不影响其表达的语义。
5.行的顺序也不重要,交换行数据的顺序也不影响其内容。
6.同一个关系中的元组不能重复,即在一个关系中,不能有两个元组的值完全相同相同。
关系代数
关系代数是关系操作语言的一种传统的表示方式,它是一种抽象的查询语言,是一种单次关系(或者说是集合)语言。包括运算对象、运算符和运算结果。
关系代数可分为两大类:
传统集合运算:这类运算完全把关系看作元组的集合,包括广义迪卡尔积运算、并运算、交运算、差运算。
专门的关系运算:这类关系除了把关系看作元组的集合以外,还通过运算表达了查询的要求,包括选择、投影、连接、除运算。
关系代数
关系代数是关系操作语言的一种传统的表示方式,它是一种抽象的查询语言,是一种单次关系(或者说是集合)语言。包括运算对象、运算符和运算结果。
关系代数可分为两大类:
1.传统集合运算:这类运算完全把关系看作元组的集合,包括广义迪卡尔积运算、并运算、交运算、差运算。
2.专门的关系运算:这类关系除了把关系看作元组的集合以外,还通过运算表达了查询的要求,包括选择、投影、连接、除运算。
传统关系运算
1.并运算
设关系R与S均是n目关系,其结果仍是n目关系,由属于R或S的元组组成。
2.交运算
设关系R与S均为n目关系,关系R与S的交记为:其结果仍是n目关系,由属于R也属于S的元组组成。
3.差运算:其结果仍是n目关系,由属于R且不属于S的元组组成。
4.广义迪卡尔积:广义迪卡尔积不要求参加运算的两个关系具有相同的目数。
两个分别为m目和n目的关系R和S的广义迪卡尔积是一个有 m+n 个列的元组的集合。元组的前m列是关系R的一个元组,后n个是关系S的一个元组。若R有K1个元组,S有K2个元组,则R和S的广义迪卡尔积有 K1*K2个元组.
专门的关系运算
-
选择
选择是指从指定的关系中选出满足给定条件的元组而组成的一个新的关系。
-
投影
投影运算是从关系R中选取若干列,并用这些属性组成一个新的关系。
-
连接
连接运算用来连接相互之间有联系的两个关系,从而产生一个新关系。这个过程通过连接属性来实现。
-
自然连接与等值连接的区别:
自然连接要求相等的分量必须有共同的属性名,等值连接则不要求
自然连接要求吧重复的属性名去掉,等值连接不要求
外部连接如果希望不满足连接条件的元组也出现在连接结果中,则可以通过外连接(outer join)操作实现。外连接有三种形式:左外连接、右外连接、全外连接。含义是将指定一边(如左连接就是左边的关系)中不满足的元组也保留到连接后的结果中,并在结果中将另一关系各属性置为空(NULL)值。
-
半连接
4.除
除法的描述:
设关系S的属性是关系R的属性的一部分,则R ÷ S R \div SR÷S为这样一个关系:
此关系的属性是由属于R但不属于S的所有属性组成$R \div S $ 的任一元组都是R中某元组的一部分。但必须符合下列要求,即任取属于 $R \div S $ 的一个元组 t,则t与S任一元组连接后,都为 R 中原有的元组。