3.1关系数据模型和关系数据库
关系数据库使用关系数据模型组织书,这种思想源于数学。真正系统、严格的提出关系数据模型的是IBM的研究员E.F.Codd。
关系模型有关系模型的数据结构,关系模型的操作集合和关系模型的完整性约束组成。
1.1数据结构
关系数据模型用二维表来组织数据,这个二维表在关系数据库中就称为关系。关系数据库就是表或者说是关系的集合。
1.2数据操作
传统的关系运算:并、交、差、广义笛卡尔乘积。
专门的关系运算:选择、投影、连接、除。
有关的数据操作:查询、插入、删除和更改。
关系模型的操作特点:
(1)操作的数据以及操作的结果都是完整的集合(表)
(2)这些集合可以是只包含一行数据的集合,也可以是不包含任何数据的空集合
(3)而不是在关系模型数据库中典型的操作是一次一行或一次一个记录。
(4)集合处理能力是关系型数据库区别于其他类型数据库的一个重要特征
关系数据库与非关系型数据库的区别
在非关系模型中,各个数据记录之间是通过指针等方式连接的,当要定位到某条记录时,需要用户自己按指针的链接方向遍历查找,也就是“导航”。
在关系模型中,用户只需要指定数据的定位条件,数据库管理系统就可以自动定位到该数据记录。
关系操作是通过关系语言实现的,关系语言的特点是高度非过程化的。所谓非过程化是指以下两个方面:
(1)用户不必关心数据的存取路径和存取过程
(2)用户也没有必要编写程序代码来实现对数据的重复操作
1.3数据完整性约束
数据库中的完整性是指保证数据正确性的特征。数据完整性包括两个方面:
(1)与现实世界中应用需求的数据的相容性和正确性
(2)数据库内数据之间的相容性和正确性
在关系数据模型中,数据完整性分三类,实体完整性,参照完整性和用户定义的完整性。
实体完整性和参照完整性是系统及的约束。
用户定义的完整性也被称为域的完整性,它属于应用级的约束。
3.2关系模型的基本术语与形式化定义
2.1基本术语
(1)关系就是二维表,二维表的满足就是关系的名字。
(2)二维表的每个列成为一个属性,每个属性有一个名字,称为属性名。表中对应某一列的值为属性值,列的个数为关系的元数。
(3)二维表中属性的取值范围称为值域。
(4)二维表中的一行数据称为一个元组。
(5)元组中的每一个属性称为元组的一个分量,n元关系的每个元组有n个分量。
(6)二维表的结构称为关系模式,关系模式就是二维表的表框架或者表头结构。
(7)一个关系模型的所有关系的集合称为关系数据库。
(8)一个属性或属性集能够唯一标识一个关系的元组而又不包含多余的属性,则称候选键。又称为候选关键字或候选码。
(9)当关系中有多个候选键是,可以从中选择一个作为主键。
(10)包含在候选键中的属性称为主属性,不包含在候选键中的属性称为非主属性。
2.2形式化定义
(1)关系的形式化定义
笛卡尔乘积
(2)对关系的限定
- 关系中的每个分量都必须是不可再分的最小属性。
- 表中的数据类型是固定的
- 不同列的数据可以取自相同 值域
- 关系表中列的顺序不重要
- 行的顺序也不重要
- 同一个关系中的元组不能重复,不能完全相同
3.3关系代数
关系代数两大类
(1)传统的集合运算:广义笛卡尔积运算、并运算、交运算和差运算。
(2)专门的关系运算:选择、投影、连接和除运算。
运算符四大类:集合运算符,专门的关系运算符,比较运算符和逻辑运算符
3.1传统的集合运算
(1)并运算 R∪S={t|t∈R or t∈S}
(2)交运算 R∩S={t|t∈R and t∈S}
(3)差运算 R-S={t|t∈R and t不属于S}
(4)广义笛卡尔积
3.2专门的关系运算
(1)选择
(2)投影
(3)连接
-
θ连接 > < >= <=
-
等值连接(θ连接的特例)
-
自然连接
-
外部连接
左外连接R*∞S
右外连接R∞*S
全外连接R*∞*S
-
半连接
自然连接与等值连接的区别:
1.要求相等的分量必须有共同的属性名
2.要求把重复的属性名去掉
(4)除
R(X,Y)÷S(Y,Z)=R(X,Y)÷ΠY(S)
关系运算的优先级按从高到第的顺序为:投影、选择、乘积、连接和除(同级)、交、并和差(同级)。