关系数据库
关系数据库系统是支持关系模型的数据库系统。
关
系
模
型
{
关
系
数
据
结
构
关
系
操
作
集
合
关
系
完
整
性
约
束
关系模型 \begin{cases} \ 关系数据结构 \\ \ 关系操作集合\\ \ 关系完整性约束\\ \end{cases}
关系模型⎩⎪⎨⎪⎧ 关系数据结构 关系操作集合 关系完整性约束
一、关系数据结构及形式化定义
1.1 关系
在用户看来,关系模型中数据的逻辑结构是一张扁平的二维表。
关
系
{
域
(
D
o
m
a
i
n
)
笛
卡
尔
积
(
C
a
r
t
e
s
i
a
n
P
r
o
d
u
c
t
)
关
系
(
R
e
l
a
t
i
o
n
)
关系 \begin{cases} \ 域(Domain) \\ \ 笛卡尔积(Cartesian\ Product)\\ \ 关系(Relation)\\ \end{cases}
关系⎩⎪⎨⎪⎧ 域(Domain) 笛卡尔积(Cartesian Product) 关系(Relation)
- 域:一组具有相同数据类型的值的集合
- 笛卡尔积:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
Tips:数学上笛卡尔积没有交换律,但是在数据库中,做了拓展,因为语义上交换前后一致**。 - 关系:一组域中有意义的元组构成的子集,表示为R(D1, D2, …, Dn)
- R: 关系名;
- n为关系的度或者目(degree):域的数量
- 关系的几个重要概念
- 超码(Super Key):任意一个候选码的超集。
- 候选码(Candidate Key):能唯一标识元组的属性(组)。
- 主码(Primary Key):多个候选码中选定一个作主码。
- 主属性(Prime Attribute):候选码中的诸属性。
- 非主属性(Non-Key Attribute):不出现在任何候选码中的属性
- 关系的三种类型:
类型 | 内容 |
---|---|
基本关系(基本表) | 数据库中的表,实际存在的表,是实际存储数据的逻辑表示 |
查询表 | 查询结果对应的表 |
视图表 | 有基本表或者其他视图表导出的虚表,不对应实际存储的数据,即把某些属性单独导出 |
- 关系性质:
1.2 关系模式
- 关系的型与值
- 关系的型:关系的结构(字段名、字段个数、域等)
- 关系的值:关系中具体的元组,关系的实例。
- 关系模式(Relation Schema)即关系的型的定义,关系的描述,指出关系的结构
Tips:属性是域的子集,不同属性可能来自同一个域** - 关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,二关系是动态的、随时间不断变化的,应为关系操作在不断地更新着数据库中的数据。
1.3 关系数据库
在一个给定的应用领域中,所有关系的集合构成一个关系数据库。
- 关系数据库的型:也称关系数据库模式,是对关系数据库的模式。关系数据库模式包括若干域的定义,以及在这些域上定义的若干关系模式。
- 关系数据库的值:这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。
1.4 关系模型的存储结构
二、关系操作
-
常用操作方式:
- 查询(query)操作;
- 插入、删除、修改(update)操作;
-
特点:集合操作方式、操作的对象和结果都是集合。
-
关系数据语言的种类:
-
关系数据语言SQL的特点:
三、关系完整性约束
三类完整性约束:实体完整性(entity integrity)、参照完整性(referential integrity)、用户定义的完整性(user-defined intergrity)。
3.1 实体完整性
- 描述:若属性A是基本关系R的主属性,则属性A不能取空值(null value)
- 说明:
- 实体完整性规则是针对基本关系而言的。
- 现实世界中的实体是可区分的。
- 关系模型中以主码作为唯一性标识。
- 主码中的属性即主属性不能取空值。
3.2 参照完整性
- 描述:F是基本关系R的一个或一组属性,若F不是关系R的码,但F与基本关系S的主码Ks相对应,则称:
- F是基本关系R的外码(Foreign key)
- 基本关系R为参照关系(Referencing Relation)
- 基本关系S为被参照关系-目标关系(Referenced Relation)。
Tips:
外码取值的可能情况: - 空(NULL);(进行关系操作时,有时关系中的某属性值在当前时刻时填不上)
- 目标关系中存在的值;
Tips:表内属性间的参照也要有存在的值。
3.3 用户自定义完整性
- 描述:根据客观实际的一些约束条件,用户自定义额外的完整性约束。
- 关系模型应提供定义和检验这类完整性的 机制,以便用统一的系统的方法处理它们, 而不要由应用程序承担这一功能。通常由 RDBMS的Check约束提供这类检查。
四、关系代数
关系代数(Relational Algebra):以集合为基础,定义一组运算,由已知关系经过一列运算得到需要的查询结果。
- 关系代数的运算对象是关系,运算结果亦为关系
- 关系运算的分类:传统的集合运算、专门的关系运算
4.1 传统的集合运算
-
二目运算,包括并、差、交、广义笛卡尔积4种;前三个更适用于关系模式一致的关系。
-
广义笛卡尔积运算实例:
4.2 专门的关系运算
选择
Tips:比较运算符里的
≠
\neq
= ,实际上在SQL语言里是
<
>
<>
<> .
投影
Tips:投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)
综合例题:
连接
-
等值连接:A=B
-
自然连接:AB为相同属性组,且去除重复的属性且等值。(取消重复列,只保留相同属性的共同实体)
等值连接与自然连接:
一般连接:解题步骤:- 确定结果中的属性列
- 确定参与比较的属性列
- 逐一取R中的元组分别和S中与其符合比较关系的元组进行拼接。
-
外连接:连接中舍弃的元组(悬浮元组),也进行保留的连接称做外连接。(不保留的是自然连接)
- 右外连接:保留右边关系S中舍弃的元组的连接称做右外连接。
- 左外连接:保留左边关系R中舍弃的元组的连接称做左外连接。
除法
- 象集
- 除法:设关系R除以关系S的结果为关系T,则
重命名
聚集操作
g
s
u
m
(
s
a
l
a
r
y
)
(
T
e
a
c
h
e
r
)
g_{sum(salary)}(Teacher)
gsum(salary)(Teacher)
例题:
易错: