关系演算2025年2月12日 | 阅读 6 分钟 ![]() 有一种替代的查询制定方式称为关系演算。关系演算是一种非过程式查询语言。在非过程式查询语言中,用户只关心如何获得最终结果的细节。关系演算只说明要什么,而不解释如何做。大多数商业关系型语言都基于关系演算的某些方面,包括 SQL-QBE 和 QUEL。 为什么称为关系演算?它基于谓词演算,这是符号语言的一个分支的名称。谓词是带有参数的真值函数。通过为参数代入值,函数的结果就变成了一个称为命题的表达式。它可以是真的也可以是假的。它是谓词演算子集的一个定制版本,用于与关系数据库通信。 许多演算表达式涉及量词的使用。有两种量词:
在使用公式中的量词概念之前,我们需要了解自由变量和约束变量的概念。 一个元组变量 t 如果被量化,则称其为约束变量,这意味着如果它在任何地方出现,那么这个变量就是被约束的。未被约束的变量称为自由变量。 自由变量和约束变量可以与编程语言中的全局变量和局部变量进行比较。 关系演算的类型![]() 1. 元组关系演算 (TRC)它是一种非过程式查询语言,其基础是查找满足谓词的元组变量(也称为范围变量)。它描述了所需信息,而无需提供获取该信息的具体过程。元组关系演算专门用于选择关系中的元组。在 TRC 中,过滤变量使用关系中的元组。结果可以包含一个或多个元组。 符号表示 元组关系演算中的查询表示为以下符号: 其中 T 是结果元组 P(T) 是用于获取 T 的条件。 例如 输出:此查询从 AUTHOR 关系中选择元组。它返回 AUTHOR 关系中写了“database”相关文章的作者的“name”元组。 TRC(元组关系演算)可以被量化。在 TRC 中,我们可以使用存在量词 (∃) 和全称量词 (∀)。 例如 输出:此查询将产生与上一个查询相同的结果。 2. 域关系演算 (DRC)第二种关系形式称为域关系演算。在域关系演算中,过滤变量使用属性的域。域关系演算使用与元组演算相同的运算符。它使用逻辑连接词 ∧ (与)、∨ (或) 和 ┓ (非)。它使用存在量词 (∃) 和全称量词 (∀) 来绑定变量。QBE 或 Query by example 是与域关系演算相关的查询语言。 符号表示 其中 a1, a2 是属性 例如 输出:此查询将从 javatpoint 关系中生成 article、page 和 subject,其中 subject 是 database。 DBMS 中的关系演算用例DBMS 中的关系演算用例如下所示。
DBMS 中关系演算的限制
结论在 DBMS 中,关系演算告诉我们要从数据库中获取什么,而不是如何获取。 关系演算是一种声明式语言。 TRC 使用元组变量来针对谓词表达式的条件验证每一行。 DRC 利用域变量根据要求返回所需的列或属性。 TRC 和 DRC 都可以为任何需求编写。 TRC 和 DRC 查询可以返回多个元组或属性。 常见问题1. 域关系演算与元组关系演算有什么区别? 而域关系演算用于从关系中选择单个值,元组关系演算则使用元组(行)来选择关系(表)中的元组。域关系演算使用单个值变量,而元组关系演算使用元组变量来表示元组。 2. 关系演算使用的查询语言是过程式的还是非过程式的? 关系演算使用的查询语言是非过程式的。它描述了所需的数据,而不是如何获取它。DBMS 系统负责执行查询的实际操作。 3. 关系演算有哪些限制? 与关系代数相比,不熟悉形式逻辑的人可能会发现关系演算更难理解。由于数据库管理系统必须在执行之前将演算表达式转换为可比较的代数表达式,因此它可能不如关系代数有效,尤其是在处理复杂查询时。 关系代数选择题1. _ _ _ _ 查询语言的目标是为用户提供期望的结果。
答案:b 解释:非过程式查询语言的目标是为用户提供期望的结果。 2. 以下哪项指定了关系演算的类型?
答案:b 解释:关系演算有两种类型:域关系演算和元组关系演算。 3. 在 TRC 中,_ _ _ _ 使用关系中的元组。
答案:c 解释:过滤变量在 TRC 中使用关系中的元组。 4. 非过程式查询语言称为 _ _ _ _ 系统。
答案:d 解释:非过程式查询语言称为关系演算。 5. 元组关系演算用于在关系中选择 _ _ _ _ 。
答案:c 解释:元组关系演算用于在关系中选择元组。 下一主题函数依赖 |
我们请求您订阅我们的新闻通讯以获取最新更新。