目录

一、σ、π、⋈

    1.选择σ

    2.投影π

    3.连接⋈

二、 构建语法树

    ① 解读sql语句

    ② 写出关系代数表达式

    ③ 画出语法树

三、优化语法树

四、练习

    语法树优化方法


一、σ、π、⋈

    1.选择σ

       选择就是在关系R中选择满足给定条件的诸元组。

       通过条件Sdept='IS'选择出系别是IS的学生信息。 

    2.投影π

       关系R上的投影是从R中选择出若干属性列组成新的关系。

       选择出Sname、Sdept属性列组成新的关系。

通过两幅图对比可以看出,选择σ是从原表中选择出满足条件的行,投影π是从原表中选择出满足条件的列。

    3.连接⋈

       连接也称为θ连接。它是从两个关系的笛卡儿积中选取属性间满足一定条件的元组。

       连接分为非等值连接,等值连接、自然连接。其中我们需要注意的是自然连接,理解自然连接是什么请参考文章:非等值连接、等值连接、自然连接-CSDN博客 

二、 构建语法树

    ① 解读sql语句

       通常考查语法树优化的都是多表查询。
       章节一中说到,投影是从一个关系中选择出若干属性列组成新的关系,select语句部分描述的的是投影π。
       where表示的条件可以分为两部分,一部分是题目真正想查询的结果,另一部分是多表连接的条件,where语句强调的是条件,也就是选择,章节一中说到选择就是在一个关系中选择满足给定条件的诸元组。所以where语句部分描述的是选择σ。
       最后则剩下关系表的连接,表的连接在语法树中笛卡尔积,符号用 x 表示。

    ② 写出关系代数表达式

       以书上如下例子,写出关系代数表达式:


    此题中SC.Cno='2',是题目真正想查询的结果;而Student.Sno=SC.Sno则是两表连接的条件。

    ③ 画出语法树

       有了关系表达式,我们就可以画出语法树,画语法树时有一个技巧:"由外到里,由上到下",由关系表达式最外面的括号开始一层层向里从上到下画出语法树

三、优化语法树

     语法树的优化实际上就是通过条件不断选择出一个更加细化的关系,再与另一个关系笛卡尔积连接,这样可以减少计算量。

    当然书上用的等值连接,在笛卡尔积上加上条件用以选择,表达的意义与等值连接相同,理解即可。如果题目要求用等值连接,或者题目给出的关系代数表达式用的等值连接,那么画图也要用等值连接。

四、练习

    书上例子较为简单,这里用一个稍微复杂一点的例子练习用以加深理解。

    语法树优化也许各有各的方法,我的方法如下:

    语法树优化方法

       第一步:把题目想查询的结果的选择条件移动到对应关系模式前。
       第二步:把表的连接条件拆开,移动到对应关系模式前。
       第三步:在对应关系模式前,添加题目查询所需的列属性和连接条件的投影。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐