文章目录
- 3.1关系数据模型和关系数据库
- 3.1.1数据结构
- 3.1.2数据操作
- 3.1.3数据完整性约束
- 3.2关系模型的基本术语与形式化定义
- 3.2.1基本术语
- 3.2.2形式化定义
- 3.3关系代数
- 3.3.1传统几何运算
- 3.3.2专门的关系运算
3.1关系数据模型和关系数据库
3.1.1数据结构
1、关系模型三要素:数据结构、操作集合、完整性约束
2、用二维表来组织数据关系
3、关系数据库就是表或者说是关系的集合
4、表是逻辑结构而不是物理结构
3.1.2数据操作
1、传统的关系运算:并、交、差、广义笛卡尔积
2、专门的关系运算:选择、投影、连接、除
3、有关的数据操作:查询、插入、删除、更改
4、操作特点:关系模型中操作的数据以及查询的结果都是完整的集合(或表),
这些集合可以只包含一行数据,也可以是不包含任何数据的空集合。
非关系模型数据库中典型的操作是一次一行或一次一个记录。
集合处理能力是关系系统区别于其他系统的重要特征。
3.1.3数据完整性约束
保证数据完整性的特征,完整性是一种语义概念
(1)与现实世界中应用需求的数据的相容性和正确性
(2)数据库内数据之间的相容性和正确性
3.2关系模型的基本术语与形式化定义
3.2.1基本术语
1、关系:关系就是二维表,二维表的名字就是关系的名字
2、属性:二维表中的列
3、值域:二维表中列的范围
4、元组:二维表中的行
5、分量:元组中的每一个属性称为元组的一个分量
6、关系模式:二维表的结构
7、关系数据库:一个关系模型的所有关系的集合
8、候选键:唯一标识一个关系的元组且又不包含多余的属性。语境不同,候选键也不同(数量)
9、主键:关系中有多个候选键,择其一作为主键。每个关系只能有一个主键。主键不能为空。唯一确定一个元组。也叫主码或主关键字。
10、主属性和非主属性:包含在任一候选键中的属性称为主属性,不包含在任一候选键中的属性称为非主属性
3.2.2形式化定义
3.2.2.1形式化定义
定义笛卡尔积:设D1,D2,…,Dn为任意集合,定义笛卡尔积D1,D2,…,Dn为: D1 × D2 × … × Dn ={( d1,d2,…,dn ) | di ∈Di,i=1,2,…,n } 其中每一个元素(d1,d2,…,dn)称为一个n元组,简称元组。 元组中每一个di称为是一个分量。
笛卡尔积D1,D2,…,Dn的任意一个子集称为D1,D2,…,Dn上的一个n元关系。 形式化的关系定义同样可以把关系看成二维表,给表中的每个列取一个名字,称为属性。 n元关系有n个属性,一个关系中的属性的名字必须是唯一的。 属性Di的取值范围(i=1,2,…,n)称为该属性的值域。
3.2.2.2对关系的限定
关系中的每个分量都是不可再分的最小属性 表中列的数据类型是固定的,即列中的每个分量都是同类型的数据,来自相同的值域。 不同列的数据可以取自相同的值域。 关系表中列的顺序不重要。 关系表行的顺序也不重要。 同一个关系中的元组不能重复。
3.3关系代数
1、概念:关系操作语言的一种传统表示方式,是一种抽象的查询语言。 是一种纯理论语言,它定义了一些操作,运用这些操作可以从一个或多个关系中得到另一个关系,而不改变源关系。 关系代数的操作数和操作结果都是关系,而且一个操作的输出可以是另一个操作的输入。
2、分类:
(1)传统的集合运算:并、交、差、笛卡尔积
(2)专门的关系运算:选择、投影、连接、除
3、注意:运算对象是关系,运算结果也是关系。 与一般的运算一样,运算对象、运算符和运算结果是关系代数的三大要素。
4、运算符
3.3.1传统的集合运算
1、并(R∪S):设关系R与关系S均是n目关系,关系R与关系S的并记为: R∪S={t | t∈R ∨t∈S } 其结果仍是n目关系,由属于R或属于S的元组组成。 元组在新关系中的顺序不重要。
2、交(R∩S):设关系R与关系S均是n目关系,关系R与关系S的交记为: R∩S={t | t∈R ∧t∈S } 其结果仍是n目关系,由属于R并且也属于S的元组组成。
3、差(R-S):设关系R与关系S均是n目关系,关系R与关系S的差记为: R-S={t | t∈R ∧t∈S } 其结果仍是n目关系,由属于R但不属于S的元组组成。 R∩S=R-(R – S )
4、两个分别为n目和m目的关系R和关系S的笛卡尔积是一个(m+n)列的元组的集合。元组的前n个列是R的一个元组,后m个列是S的一个元组。 若R有K1个元组,S有K2个元组,则关系R和关系S的广义笛卡尔积有K1×K2个元组,记做: R×S={tr^ts | tr∈R ∧ ts∈S} tr^ts表示由元组tr和ts前后有序连接而成的一个元组。 任取元组tr和ts,当且仅当tr属于R且ts属于S时,tr和ts的有序连接即为R×S的一个元组。
实例:
3.3.2专门的关系运算
1、选择运算
σF(R)={ r | r∈R ∧ F(t)=‘真’ }
条件表达式, 取逻辑“真”值或“假”值
例. 查询计算机系学生信息。 σSdept=‘计算机系’(Student)
2、投影运算
ΠA(R) = (t(A)| t∈R)
属性列序列
例2.查询学生的姓名和所在系。 ∏sname,sdept(Student)
3、连接
连接运算用来连接相互之间有联系的两个关系,从而产生一个新的关系。 连接运算具有如下几种形式:
(1)θ连接
注意:A、B是关系R和S上语义相同的属性或属性组, θ是比较运算符。 连接运算从R和S的广义笛卡尔积中选择R关系在A属性组上的值与S关系在B属性组上的值满足θ的元组。
(2)等值连接(θ连接的特例)
θ为“=”的连接成为等值连接。它是从关系R与S的笛卡尔积中选取A,B属性值相等的那些元组:
(3)自然连接
即若R与S具有相同的属性组B,则自然连接可记作:
是一种特殊的等值连接,它去掉了等值连接结果中的重复的属性列。
等值连接与自然连接示例:
(4)外部连接(或称外连接)
如果希望不满足连接条件的元组也出现在连接结果中,则可以通过外连接实现。
外连接有三种:
左外连接:
右外连接:
全外连接:
注意:
左(右)外连接:把连接符号左(右)边的关系中不满足连接条件的元组也保留到连接后的结果中,并在连接结果中将该元组所对应的右(左)边关系的各个属性均置成空值(NULL)。
全外连接:把连接符号两边的关系中不满足连接条件的元组均保留到连接后的结果中,并在连接结果中将不满足连接条件的各元组的相关属性均置成空值(NULL)。
(5)半连接
在两个关系之间执行连接操作,并将其结果投影在第一个操作关系的所有属性上。
优点是可以减少必须参与连接的元组的数目。上述半连接是一个半θ连接,其他还有半等值连接、半自然连接等。
4、除
设关系S的属性是关系R的属性的一部分,则R÷S为这样一个关系:
(1)此关系的属性是由属于R但不属于S的所有属性组成; R÷S的任一元组都是R中某元组的一部分。
(2)但必须符合下列要求,即任取属于R÷S的一个元组t,则t与S的任一元组连接后,都为R中原有的一个元组。
设有关系R(X,Y)和S(Y,Z),其中X、Y、Z为关系的属性组,则:
R(X,Y)÷ S(Y,Z)=R(X,Y)÷ ∏Y(S)
3.3.3关系代数操作总结