2.1 关系模型

2.1.1 关系数据结构

 在关系数据库中,表与表的联系就是通过公共属性实现的,这个公共属性是一个表的主码和另外一个表的外码。

例如:学生(学生编号,姓名,性别,年龄,专业编号, 身份证号码) 

专业(专业编号,专业名称,专业负责人)

  • 关系的性质是“原子属性、无重复行/列、行列顺序无关”。 

2.1.2 关系操作

关系操作是关系数据模型提供的一系列操作,其特点是集合操作,操作的对象和结果都是集合。

关系操作分为检索操作更新操作两大类:

  • 关系检索操作:查找用户所需数据,可针对单关系或多关系。
  • 关系更新操作:包括插入、删除和修改,需保持关系模式的完整性约束。

基本数据操纵功能(4种)

 基本操纵方式(5种)

  • 属性指定:指定关系的某些属性,确定二维表中的列,用于检索或定位。
  • 元组选择:用逻辑表达式给出关系中满足条件的元组,确定行,主要用于检索或定位。
  • 关系合并:将两个关系合并成一个关系,用于完成数据插入或修改。
  • 元组插入:在关系中添加元组后不删除,用于数据插入或修改的特定情况。
  • 元组删除:先确定要删除的元组,可分别用关系代数和关系演算方式表示。

关系数据语言:

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

关系演算语言通过使用谓词来表达查询,

而结构化查询语言具有前两者的共同特点。

2.1.3 关系完整性约束

2.2 ✨关系代数

⑴关系代数:用户对关系数据的操作通过关系代数表达式描述。 

⑵关系代数运算的三个要素:❶运算对象:关系 ❷运算结果:关系❸运算符:四类

⑶表示记号:设关系模式为 R(A1,A2,...,An) 。一个关系设为Rt∈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)支持选择、投影和(自然) 连接运算。对这些运算不必要求定义任何物理存取路径。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐