关系数据库
1、关系数据结构及形式化定义
依据数据模型的三要素,关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。下面依次介绍:
1.1、关系
关系模型的数据结构非常简单,只包含单一的数据结构——关系。在用户看来,关系模型数据的逻辑结构就是一张扁平的二维表。关系模型是建立在代数的基础上,这里从集合论的角度给出关系数据结构的形式化定义:
-
域
域是一组具有相同数据类型的值的集合。
-
笛卡尔积
笛卡尔积是域上的一种集合运算。
定义:给定一组域:D1,D2,…,Dn,允许其中某些域是相同的,这一组域的笛卡尔积为:
D 1 ✖ D 2 ✖ . . . ✖ D n = { ( d 1 , d 2 , . . . , d n ) ∣ d i ∈ D i , i = 1 , 2 , . . . , n } D1✖D2✖...✖Dn = \{(d1,d2,...,dn)|di∈Di,i=1,2,...,n\} D1✖D2✖...✖Dn={ (d1,d2,...,dn)∣di∈Di,i=1,2,...,n}
其中,每一个元素 (d1,d2,…,dn) 叫做一个 n-元组,简称元组。元素中的每一个值 di 称为一个分量。一个域允许的不同取值个数称为 这个域的基数。笛卡尔积可表示为一张二维表。表中的每行对应一个元组,表中的每一列的值来自一个域。
-
关系
D1✖D2✖…✖Dn 的子集叫做在域 D1,D2,…,Dn 上的关系,表示为:R(D1,D2,…,Dn)。这里的 R 为关系的名字,n 为关系的目或度。
若关系中某一属性组的值能唯一地标识一个元组,而其他子集不能,则称该属性组为候选码。若一个关系有多个候选码,则选定其中一个为主码。候选码的诸属性称为主属性。不包含在任何候选码中的属性称为非主属性或非码属性。在最简单的情况下,候选码只包含一个属性。在最极端的情况下,关系模式的所有属性是这个关系模式的候选码,称为全码。
关系可以有三种类型:基本关系(通常称为基本表或基表)、查询表和视图表。基本关系具有以下 6 条性质:
- 列是同质的,即每一列中的分量是同一类型的数据,来自同一个域;
- 不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名;
- 列的顺序无所谓;
- 任意两个元组的候选码不能取相同的值;
- 行的顺序无所谓;
- 分量必须取原子值,即每一个分量都必须是不可分的数据项。
1.2、关系模式
在数据库中要区分型和值。关系数据库中,关系模式是型,关系是值。关系模式是对关系的描述。那一个关系需要描述哪些部分呢?
定义:关系的描述称为关系模式。它可以形式化地表示为:R(U,D,DOM,F)
其中,R 为关系名,U 为组成该关系的属性名集合,D 为 U 中属性所来自的域,DOM 为属性向域的映像集合,F 为属性间数据的依赖关系集合。
1.3、关系数据库
在关系模式中,实体以及实体间的联系都是用关系来表示的。在给定的一个应用领域中,所有关系的集合构成一个关系数据库。
关系数据库也有型和值之分。关系数据库的型也称为关系数据库模式,是对关系数据库的描述。关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。
2、关系操作
2.1、基本的关系操作
关系模型中常用的关系操作包括查询操作和插入、删除、修改操作两大部分。查询操作又可以分为选择、投影、连接、除、并、差、交、笛卡尔积等。其中选择、投影、并、差、笛卡尔积是 5 种基本操作。
2.2、关系数据语言的分类
关系代数语言(ISBL)、关系演算语言:元组关系演算语言(ALPHA、QUEL)和 域关系演算语言(QBE)、具有关系代数和关系演算双重特点的语言(SQL)
3、关系的完整性约束
3.1、实体完整性约束
规则:若属性(指一个或一组属性)A 是基本关系 R 的主属性,则 A 不能去空值。
3.2、参照完整性约束
外码。规则:若属性(或属性组)F 是基本关系 R 的外码,它与基本关系 S 的主码 Ks 相对应(基本关系 R 和 S 不一定是不同的关系),则对于 R 中的每个元组在 F 上的值必须:
- 取空值;
- 或者等于 S 中的某个元组的主码值。
3.3、用户自定义约束
用户自定义的关系数据库的约束条件。
4、关系代数
4.1、传统的集合运算
- 并
- 差
- 交
- 笛卡尔积
4.2、专门的关系运算
- 选择
- 投影
- 连接
- 等值连接
- 自然连接:一种特殊的等值连接,它要求两个关系中进行比较的分量必须是同名的属性组,并且在结果中把重复的属性列去掉。
- 外连接:自然连接中被舍弃的元组称为悬浮元祖,把悬浮元组也保存在结果关系中,而在其他属性上填空值。
- 左外连接:只保留左边关系中的悬浮元组。
- 右外连接:只保留右边关系中的悬浮元组。
- 除:象集来定义的
5、总结
- 关系:一个关系对应通常说的一张表
- 关系模式:关系的描述
- 关系模型:关系模型由关系数据结构,关系操作集合,关系完整性约束三部分组成
- 关系和关系模式的区别
- 关系模式是型,关系是值,关系模式是对关系的描述
- 关系是关系模式在某一个时刻的状态或者内容,关系模式是静态的、稳定的,而关系是动态的,随时间不断变化的,因为关系操作在不断地更新着数据库中的数据
- 类似于面向对象程序设计中”类“与”对象“的区别。”关系“是”关系模式“的一个实例,可以把”关系”理解为一张带数据的表,而“关系模式”是这张数据表的表结构
- 关系模型和关系的区别
- 关系模型包含关系,关系是关系模型的数据结构,在关系模型中,现实世界的实体以及实体间的各级联系均用单一的结构类型,即关系来表示