软考高级:并、交、差、笛卡尔积、选择、投影、连接
软考高级:并、交、差、笛卡尔积、选择、投影、连接
关系数据库中的基本操作和概念是数据库学习的基础,包括并、交、差、笛卡尔积、选择、投影和连接等。本文通过一个简单的例子来帮助理解这些概念,并且还包含了一些具体的题目和解答。
一、AI 讲解
这些都是关系数据库中的基本操作和概念,用于处理和操作表(关系)。我们通过一个简单的例子来帮助理解这些概念。
通俗示例
假设我们有两个表:
学生表(Students)
学号 姓名 年龄
1 张三 20
2 李四 22
3 王五 21
课程表(Courses)
课程编号 课程名称 学号
101 数学 1
102 英语 2
103 物理 3
104 化学 1
通俗解释
并(Union)
并操作可以理解为将两个表中所有数据组合到一起,并去掉重复的部分。
比如我们有另一个表,叫学生扩展表(Students_Extended),它包含其他学生的信息,我们可以通过并操作将这两个表合并成一个大表。
交(Intersection)
交操作用于找到两个表中共同的部分。
如果两个表都有相同的记录,交操作会保留这些相同的记录。例如,如果我们有两个学生表,交操作会显示同时出现在两个表中的学生。
差(Difference)
差操作用于从一个表中减去另一个表的部分。
举个例子,如果我们想知道学生表中哪些学生没有选某个课程,可以用差操作从学生表中减去那些已选课的学生。
- 笛卡尔积(Cartesian Product)
笛卡尔积是将两个表的每一行组合成一个新表,生成可能的所有组合。
比如,我们将学生表和课程表进行笛卡尔积操作,结果就是每个学生和每门课程的所有组合,这通常是一个非常大的表。
选择(Selection)
选择操作用于从表中筛选符合条件的行。
比如,我们想要找出年龄大于20岁的学生,只选择满足这个条件的行。
投影(Projection)
投影操作用于选择表中的特定列。
如果我们只想看学生的姓名和年龄,而不关心学号,我们可以对学生表进行投影操作,只保留姓名和年龄两列。
连接(Join)
连接操作用于将两个表按照某个共同的字段(通常是主键)组合在一起。
相同条件下自然连接的性能优于笛卡尔积。
二、题目
自然连接以左侧为主。
B 和C
图片中的E1、E2、E3、E4表示的是四个等价的关系代数表达式。它们都可以实现相同的查询结果,但是它们的执行顺序和步骤不同,从而导致查询效率可能不同。
要决定哪个表达式查询效率最高,通常遵循以下原则:
选择操作 (σ):尽可能提前执行选择操作,以减少后续操作处理的数据量。
投影操作 (π):尽量在所有选择和连接操作之后执行,以防止丢失必要的列。
在图中:
E1:先进行连接操作,再执行选择操作,最后进行投影。
E2:先对两个关系分别执行选择操作,再执行连接操作,最后进行投影。
E3:先进行选择和连接操作的结合,再执行投影。
E4:和E3类似,选择和连接操作结合后进行投影。
根据这些原则,E2的查询效率最高,因为它将选择操作提前到了连接操作之前,这样可以显著减少连接时的数据量,从而提高查询效率。
因此,正确答案是B: E2。