关系代数 2025年5月5日 | 阅读12分钟
关系代数是一种过程化的查询语言。它提供了一个逐步获得查询结果的过程。它使用运算符来执行查询。
它也是一种概念性语言。我们的意思是,用它编写的查询不在计算机上运行,因此它不被用作商业语言。然而,这些知识使我们能够理解 RDBMS 的优化和查询执行。
基本集合定向操作: 也称为传统的集合定向操作。此操作源自数学集合论。基本集合定向操作包括以下操作。所有操作都是二元操作,这意味着操作应用于一对关系。
如果两个关系可以进行并集运算,则满足以下条件
所有关系必须具有相同的属性 第一个关系中的每个列必须与第二个关系中的相应列具有相同的数据类型。相应属性的名称不必相同。 例如: 考虑两个关系 P 和 Q,P 和 Q 的度分别为 m 和 n。度必须相等,则 m=n。
特殊关系操作: 这些操作侧重于元组的结构。这些操作不仅增强了代数的功能,还简化了使用集合定向操作会显得过长的通用查询。特殊关系操作包括以下操作
让我们逐一详细解释。
1. 选择操作 选择操作也称为限制操作,它产生一个新的关系,其中包含满足指定条件的关系行。 选择操作选择满足给定谓词的元组。 它用西格玛 (σ) 表示。
其中
σ 用于选择谓词r 用于关系p 用作命题逻辑公式,可能使用 AND、OR 和 NOT 等连接符。这些关系可以使用关系运算符,如 =、≠、≥、<、>、≤。
例如:LOAN 关系
BRANCH_NAME LOAN_NO AMOUNT Downtown L-17 1000 Redwood L-23 2000 Perryride L-15 1500 Downtown L-14 1500 Mianus L-13 500 Roundhill L-11 900 Perryride L-16 1300
输入
输出
BRANCH_NAME LOAN_NO AMOUNT Perryride L-15 1500 Perryride L-16 1300
选择操作的特性
它是一个一元操作,因为它只作用于一个关系。 结果表的度与原始表的度相同。这意味着两个关系中的列数相同。 结果关系中的行数总是小于或等于原始关系。 它独立地作用于关系中的每一行。 2. 投影操作 此操作显示了我们希望出现在结果中的属性列表。其余属性将从表中删除。 它用 ∏ 表示,要检索的属性作为下标,用逗号分隔,关系名跟在 PI 后面,并用括号括起来。
其中
A1 、A2 、A3 用作关系 r 的属性名。
示例:CUSTOMER 关系
姓名 STREET CITY Jones 主函数 Harrison Smith 北部 Rye Hays 主函数 Harrison Curry 北部 Rye Johnson Alma Brooklyn Brooks Senator Brooklyn
输入
输出
姓名 CITY Jones Harrison Smith Rye Hays Harrison Curry Rye Johnson Brooklyn Brooks Brooklyn
投影操作的特性
它是一个一元操作,即它只能作用于一个关系。 结果关系的度等于属性列表中指定的属性数。 如果属性列表包含主键属性,则结果关系中的元组数等于原始关系中的元组数。 非交换性: 它不满足交换律。去重: 此操作会从表中删除重复的行,从而得到一个有效的关系,称为去重。3. 并集操作 两个关系的并集操作会产生一个新的关系,其中包含来自两个关系的所有行,并去除重复项。 假设有两个元组 R 和 S。并集操作包含 R 中、S 中或 R 和 S 中的所有元组。 它消除重复的元组。它用 ∪ 表示。
并集操作必须满足以下条件
R 和 S 必须具有相同数量的属性。 重复的元组会自动消除。 并集操作的特性
输入关系必须是并集兼容的。 交换性: 这意味着 (R ∪ S) 的结果与 (S ∪ R) 的结果相同。结合性: 这意味着 R ∪ (S ∪ O) = (R ∪ S) ∪ O,其中 R、S 和 O 是关系。示例 DEPOSITOR 关系
CUSTOMER_NAME ACCOUNT_NO Johnson A-101 Smith A-121 Mayes A-321 Turner A-176 Johnson A-273 Jones A-472 Lindsay A-284
BORROW 关系
CUSTOMER_NAME LOAN_NO Jones L-17 Smith L-23 Hayes L-15 Jackson L-14 Curry L-93 Smith L-11 威廉姆斯 L-17
输入
输出
CUSTOMER_NAME Johnson Smith Hayes Turner Jones Lindsay Jackson Curry 威廉姆斯 Mayes
4. 交集 假设有两个元组 R 和 S。集合交集操作包含 R 和 S 中的所有元组。 它用交集符号 ∩ 表示。
交集操作的特性
输入关系必须是并集兼容的。 交换性: 这意味着 (R ∩ S) 的结果与 (S ∩ R) 的结果相同。结合性: 这意味着 R ∩ (S ∩ O) = (R ∩ S) ∩ O,其中 R、S 和 O 是关系。示例: 使用上面的 DEPOSITOR 表和 BORROW 表
输入
输出
5. 差集 两个关系的差集操作会产生一个新的关系,其中包含出现在第一个关系但不在第二个关系中的元组。 假设有两个元组 R 和 S。集合差集操作包含 R 中但 S 中不存在的所有元组。 它用减号(-)表示。
示例: 使用上面的 DEPOSITOR 表和 BORROW 表
输入
输出
CUSTOMER_NAME Jackson Hayes Willians Curry
集合差集操作的特性
输入关系必须是并集兼容的。 它们不是交换的。这意味着 R - S 的结果与 S - P 的结果不同。 它们不是结合的。这意味着 Q - (R - S) 的结果与 (Q - S) - R 的结果不同,其中 Q、S 和 R 是关系。 交集可以用差集(-)运算表示 (R ∩ S) = R - (R - S)
但是,用单个交集操作编写等式比涉及一对差集操作更方便。这里 R 和 S 的并集是可取的。
6. 笛卡尔积 笛卡尔积用于将一个表中的每一行与另一个表中的每一行组合起来。它也称为交叉积。 它用 X 表示。 它是一个二元关系,这意味着它总是作用于两个关系。
示例 EMPLOYEE
EMP_ID EMP_NAME EMP_DEPT 1 Smith A 2 Harry C 3 John B
DEPARTMENT
DEPT_NO DEPT_NAME A 营销 B 销售 C Legal
输入
输出
EMP_ID EMP_NAME EMP_DEPT DEPT_NO DEPT_NAME 1 Smith A A 营销 1 Smith A B 销售 1 Smith A C Legal 2 Harry C A 营销 2 Harry C B 销售 2 Harry C C Legal 3 John B A 营销 3 John B B 销售 3 John B C Legal
笛卡尔积操作的属性
应用笛卡尔积操作的关系不必是并集兼容的。 结果操作中的总行数等于第一个和第二个关系中的行数之积,即 数据总元组数 = E 的总元组数 + D 的总元组数
如果两个关系的某些属性在公共域上定义,则结果关系可能具有重复属性。 结果的度等于所有关系度的总和 E 的度 = E 的度 + D 的度
交换性: 这意味着 E X D 的结果与 D X 的结果相同结合性: 这意味着 E X (D X F) = (E X D) X F,其中 E、D 和 F 是关系。7. 重命名操作 重命名操作用于重命名输出关系。它用 rho (ρ) 表示。如果未应用重命名操作,则结果关系中的属性名与原始关系中的属性名相同,并且顺序也相同。
示例: 我们可以使用重命名运算符将 STUDENT 关系重命名为 STUDENT1。
注意:除了这些通用操作之外,关系代数还可以用于连接操作。 8. 连接操作 连接操作将两个或多个关系组合成一个新的关系,新的关系只包含来自不同关系的满足指定标准的元组。它形成了一个新的关系,包含来自两个连接关系的所有属性,其元组是根据应用的限制定义的,即连接条件应用于两个参与关系。连接在两个具有一个或多个共同属性的关系上执行。这些属性必须是域兼容的,即它们具有相同的数据类型。它是一个二元操作。连接操作用连接符号表示。在两个关系 P 和 Q 上表示连接操作的通用形式为
当我们在连接条件中使用等号运算符时,这种连接称为等值连接 (EQUI Join)。它是最常用的连接。
EMP 表
EMP_ID ENAME 工资 Dept_ID 101 Raj 450000 1 102 Lavi 300000 2 103 Chandan 480000 3 104 Ravi 340000 4 105 Abhi 370000 5
DEPT 关系
Dept_No Dname 1 营销 2 购买 3 融资 4 Packing 5 营销
在上面的两个表中,假设我们想知道每个员工所在部门的名称。现在,员工信息在 Emp 关系中,部门名称信息在 dept 关系中。因此,要同时检索两个表中的列,我们需要连接 EMP 和 DEPT 关系。关系可以根据 EMP 关系中存在的 Dept_ID 列和 DEPT 关系中存在的 Dept_no 列进行连接,并且它们是域兼容的。因此,EQUI Join 的结果,其条件是 EMP 关系中的 Dept_Id 属性值应等于 DEPT 关系中的 Dept_No 属性值,结果如下所示。
EMP_ID ENAME 工资 Dept_ID Dept_No Dname 101 Raj 450000 1 1 营销 102 Lavi 300000 2 2 购买 103 Chandan 480000 3 3 融资 104 Ravi 340000 4 4 Packing 105 Abhi 370000 5 5 营销
另一种称为自然连接,在这种情况下,不需要显式命名列。通过将第一个关系中的任何列与另一个具有相同名称的列连接来执行连接。自然连接的结果如下
EMP_ID ENAME 工资 Dept_ID Dname 101 Raj 450000 1 营销 102 Lavi 300000 2 购买 103 Chandan 480000 3 融资 104 Ravi 340000 4 Packing 105 Abhi 370000 5 营销
自然连接也可能被称为 INNER JOIN。另一种 JOIN 类型,其中一个关系通过比较该关系某一列的值来与自身连接,称为自连接。
SELF Join 示例
EMP_ID ENAME Mang_Id 101 Raj - 102 Lavi 101 103 Chandan 104 104 Ravi - 105 Abhi -
结果关系
ENAME Mang_Id Lavi Raj Chandan Ravi
在 EMP 关系中,EMP_ID 属性显示员工代码,ENAME 和员工工作的 Mang_Id。其中,有些员工没有 Mang_Id,即其值为 null,因为他们本身就是经理。 (这是一个可能的解释,原文本在此处可能省略了一些内容)
连接操作的特性
与笛卡尔积一样,连接操作是交换的。利用此属性,我们可以选择在连接两个关系时,哪个关系作为内部关系,哪个作为外部关系。如果 P 和 Q 是两个关系,则 P⋈ Q = Q ⋈ P
连接属性为 null 的行不会出现在结果关系中。 我们还可以通过增加复杂性来连接两个以上的关系。 通常在关系之间存在关系时使用连接,例如连接条件基于主键和外键列。 连接是一个非常强大的运算符,与投影一起构成了规范化的基础,即数据库关系设计的理论支持。 如果连接是在两个关系中同名属性上执行的,那么对于 EQUIJOIN 操作是需要重命名的,而对于 NATURAL JOIN 操作则是不需要的,因为前者即 EQUI JOIN,共同属性关系中会存在两个,而后者即自然连接,关系中只有一个共同属性。 除法操作
除法操作会产生一个新的关系,使得出现在结果关系中的每个元组都必须存在于被除数关系中。在分母关系中的每个元组的组合中。它是一个二元操作,作用于两个关系。除法用符号“÷”表示。
示例:检索在所有课程中都讲授的科目名称。
Subject Relation
科目名称 (Subject_Name) Cousres 计算机图形学 BCA 计算机图形学 BSC GWD DBMS Btech CS DBMS Btech IT Theory of Computaion MCA DBMS BCA
Course Relation
Courses Name BCA Btech CS Btech IT BSC GWD MCA BCA
Subject Relation "÷" Course Relation
结果关系是:Result Relation
除法关系属性
它是一个二元操作,因为它作用于两个关系。 除法操作适合包含“对于所有”短语的查询。 它在数据库应用程序中很少使用。 笛卡尔积和连接的区别 笛卡尔积和连接操作看起来相似,但它们实际上是不同的。连接操作的主要区别在于,只有满足连接条件的行组合才会出现在结果关系中,而在笛卡尔积中,所有可能的行组合都会出现在结果关系中。因此,如果我们不对连接操作应用任何连接条件,那么它就等同于笛卡尔积。连接操作可以根据笛卡尔积表示如下
其中 EMPLOYEE 和 DEPARTMENT 是关系。
为了解释这种区别,请考虑以下关系。
示例 EMPLOYEE
EMP_ID EMP_NAME DEPT_ID 101 Sanya 1 102 Harwinder 2 103 Johni 3 104 Priya 4
DEPARTMENT
DEPT_NO DEPT_NAME 1 教学 2 管理 3 Non Teaching 4 教学
两个关系之间的笛卡尔积如下
输出
EMP_ID EMP_NAME DEPT_ID DEPT_NO DEPT_NAME 101 Sanya 1 1 教学 101 Sanya 1 1 教学 101 Sanya 1 1 教学 102 Harwinder 2 2 管理 102 Harwinder 2 2 管理 102 Harwinder 2 2 管理 103 Johni 3 3 Non Teaching 103 Johni 3 3 Non Teaching 103 Johni 3 3 Non Teaching 104 Priya 4 4 教学 104 Priya 4 4 教学 104 Priya 4 4 教学
两个关系之间的连接操作如下
输出
EMP_ID EMP_NAME DEPT_ID DEPT_NO DEPT_NAME 101 Sanya 1 1 教学 102 Harwinder 2 2 管理 103 Johni 3 3 Non Teaching 104 Priya 4 4 教学
关于关系代数运算的多个选择题 1. 下列哪个符号用于表示关系代数中的投影操作?
PI 美元 Omega Sigma 显示答案 工作区
答案:a
说明
投影操作用希腊大写字母 PI 表示,要检索的属性作为下标,用逗号分隔,关系名跟在 PI 后面,并用括号括起来。
2. 下列哪个不是传统的关系代数运算符?
UNION 区别 连接 交集 显示答案 工作区
3. 关系代数是哪种类型的查询语言?
过程式 逻辑 关系 语义上 显示答案 工作区
4. 并集、交集和差集操作是
三元操作 一元操作 二元操作 四分位数操作 显示答案 工作区
5. 哪个操作在关系代数中被称为限制操作?
除法操作 投影操作 Join 操作 Select 操作 显示答案 工作区
答案:d
说明
选择操作也称为限制操作,它产生一个新的关系,其中只包含满足指定条件的关系行。