【数据库】第二章 关系数据库
2.1 关系模型
2.1.1 关系数据结构


在关系数据库中,表与表的联系就是通过公共属性实现的,这个公共属性是一个表的主码和另外一个表的外码。
例如:学生(学生编号,姓名,性别,年龄,专业编号, 身份证号码)
专业(专业编号,专业名称,专业负责人)
- 关系的性质是“原子属性、无重复行/列、行列顺序无关”。
2.1.2 关系操作
关系操作是关系数据模型提供的一系列操作,其特点是集合操作,操作的对象和结果都是集合。
关系操作分为检索操作和更新操作两大类:
- 关系检索操作:查找用户所需数据,可针对单关系或多关系。
- 关系更新操作:包括插入、删除和修改,需保持关系模式的完整性约束。
基本数据操纵功能(4种)
基本操纵方式(5种)
- 属性指定:指定关系的某些属性,确定二维表中的列,用于检索或定位。
- 元组选择:用逻辑表达式给出关系中满足条件的元组,确定行,主要用于检索或定位。
- 关系合并:将两个关系合并成一个关系,用于完成数据插入或修改。
- 元组插入:在关系中添加元组后不删除,用于数据插入或修改的特定情况。
- 元组删除:先确定要删除的元组,可分别用关系代数和关系演算方式表示。
关系数据语言:
关系代数语言通过对关系运算表达查询,
关系演算语言通过使用谓词来表达查询,
而结构化查询语言具有前两者的共同特点。
2.1.3 关系完整性约束

2.2 ✨关系代数
⑴关系代数:用户对关系数据的操作通过关系代数表达式描述。
⑵关系代数运算的三个要素:❶运算对象:关系 ❷运算结果:关系❸运算符:四类
⑶表示记号:设关系模式为 R(A1,A2,...,An) 。一个关系设为R,t∈R表示是R的一个元组,t[Ai]则表示元组中相应于属性Ai的一个分量。
2.2.1 传统的集合运算
R和S具有相同的结构,称它们为同构关系,这是对关系进行并、交、差运算的前提条件。

2.2.2 专门的关系运算

⑴选择(限制):
- 在关系R中选择满足给定条件的元组组成一个新的关系
- F:选择条件,是由比较运算符和/或逻辑运算符组合构成的表达式
- 选择运算是单目运算,运算符为“σ”
- 选择运算的两个关键问题:❶确定所要操作的关系;❷确定操作的条件以及如何表示。
⑵投影:
- 从R中选择出若干属性列组成新的关系
A:R中的属性列
- 投影运算也是单目运算,运算符为"∏"
⑶连接(θ连接):
从两个关系的笛卡尔积中选取属性间满足一定条件的元组
A和B:分别为R和S上度数相等且可比的属性组,θ:比较运算符
连接运算是双目运算,运算符为"⋈"
连接运算从R和S的广义笛卡尔积R×S中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系的元组。
①等值连接:θ为“=”的连接运算
- 从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组。
②自然连接:一种特殊的等值连接
- 两个关系中进行比较的分量必须是相同的属性组,在结果中把重复的属性列去掉。
- 设R和S的公共属性是B,则从关系R与S的广义笛卡尔积中找出满足R中属性B的值与S中的属性B的值相等的那些元组,去掉S中B列。
③两种常见连接的区别:
- 等值连接要求相等的分量,但不一定是公共属性,而自然连接要求相等的分量必须是公共属性。
- 等值连接不做投影运算,而自然连接要把重复的属性去掉;
- 自然连接一定是等值连接,但等值连接不一定是自然连接。

⑷除:
像集:
- 给定一个关系R(X,Y),X和Y为属性组。当t[X]=x时,X在R中的象集如下
它表示R中属性组X上值为×的诸元组在Z上分量的集合。
除运算适用的场合:查询条件是一个集合包含另一个集合,即适合于含有短语“对所有的”的查询,如“查询被所有的学生都选修的课程的信息”。
除运算的条件:假设给定关系R(X,Y)和S(Y,Z)。R和S中的Y可以有不同的属性名,但必须出自相同的域集。除运算的结果:R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Y᙮,包含S在Y上投影的集合。
除运算的实质:求R(X,Y)中所有与∏ᵧ(S)发生笛卡儿积运算的元组在X上的投影,因此可以说除运算(÷)是笛卡儿积运算(×)的逆运算。

2.3 关系演算
- 关系演算指用数理逻辑中的一阶谓词演算表示对关系数据的查询。
- 与关系代数不同,关系演算是非过程化语言,其用谓词公式表示查询条件,只要指出“做什么”,而“怎么做”交给系统解决。而关系代数语言,用户须指出运算方法和步骤。
- 按照谓词变元的不同,关系演算分为元组关系演算和域关系演算两种。
2.3.1 元组关系演算
元组关系演算是以元组变量作为谓词变元的基本对象。
- 表达式 用于指定语句的操作对象,它可以是关系名、属性名。
- 操作条件 是一个逻辑表达式,用于查找满足条件的元组,操作条件可以为空。
2.3.2 域关系演算
域关系演算的定义:用域变量代替元组变量的每一个分量,域变量的变化范围是某个值域而不是一个关系。
域关系演算表达式的一般形式为:
2.4 查询优化

一个查询请求可以通过不同的关系代数表达式来表示。那么系统应该选择哪一种表达方式,从而获得较高的查询效率呢?这就是查询优化要解决的问题。
查询优化在关系数据库系统中具有非常重要的地位,是影响 RDBMS 整体性能的关键因素。关系数据库系统和非过程化的 SQL 能够取得巨大的成功,关键是得益于查询优化技术的发展。
2.4.1 查询优化的必要性
1.关系代数表达式的优化问题
- 由于笛卡儿积运算的运算量大且产生的中间结果多,所以越早进行投影和选择运算来减少中间结果,越能够提高查询效率。
- 选择不同的关系代数运算顺序,就会得到不同的查询效率,因此,需要变换规则对关系代数表达式进行等价变换,从而将同一查询请求转换为效率最高的关系代数表达式。
2.关系代数表达式的等价变换规则
2.4.2查询优化的策略和算法
1.优化策略
- ❶尽可能早地执行选择操作(减少中间运算结果)
- ❷合并笛卡尔积和其后的选择操作,使之称为一个连接运算
- ❸合并连续的选择和投影操作,以免分开运算造成多次扫描文件,从而节省了操作时间
- ❹找出表达式里的公共子表达式。
- ❺适当地对关系文件做预处理
2.优化算法

2.5关系系统
关系系统(关系数据库系统): 支持关系模型的数据库管理系统。
2.5.1关系系统定义
一个系统可定义为关系系统, 仅当它支持:
- (1)关系数据结构。
- (2)支持选择、投影和(自然) 连接运算。对这些运算不必要求定义任何物理存取路径。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

关系代数语言通过对关系运算表达查询,

A:R中的属性列





它表示R中属性组X上值为×的诸元组在Z上分量的集合。










所有评论(0)