数据库语法树优化

目录

一、σ、π、⋈

    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则是两表连接的条件。

    ③ 画出语法树

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

三、优化语法树

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

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

四、练习

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

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

    语法树优化方法

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/17885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于香橙派搭建家庭网盘

一、概述 家庭网盘是一种用于家庭用户的在线存储和文件共享服务。它允许家庭成员在云端存储、同步和分享照片、视频、文档等文件,方便快捷地访问和管理个人和家庭数据。家庭网盘通常提供安全可靠的数据存储和备份功能,保障用户数据的安全性。此外&#x…

一文解决弹窗交互设计难题,轻松上手

弹窗交互的分类 我们每天所说的弹出窗口是一个非常笼统的概念。我们习惯性地称所有的对话框、浮层和提示条为弹出窗口。事实上,弹出窗口可以分为两种类型:模态弹出框和非模态弹出框。在 UI 在设计中,当它迫使用户与之交互时,我们…

【算法】【二叉树,DFS,哈希集合,分类讨论】力扣1110. 删点成林

1110. 删点成林 文章目录 【算法】力扣【二叉树,DFS,哈希集合,分类讨论】1110. 删点成林题目描述示例 1:示例 2: 输入输出示例解释思路解析核心思想算法步骤复杂度分析 代码实现总结 【算法】力扣【二叉树&#xff0c…

ElasticSearch - 删除已经设置的认证密码(7.x)

文章目录 Pre版本号 7.x操作步骤检查当前Elasticsearch安全配置停止Elasticsearch服务修改Elasticsearch配置文件删除密码重启Elasticsearch服务验证配置 小结 Pre Elasticsearch - Configuring security in Elasticsearch 开启用户名和密码访问 版本号 7.x ES7.x 操作步骤 …

马斯克xAI融资60亿美元,宣布打造世界第一超算中心,10万张H100GPU

昨天,埃隆马斯克的xAI初创公司宣布获得60亿美元的巨额融资,主要用于打造一台巨大的超级计算机,马斯克称之为“超级计算工厂”。 从创立OpenAI到如今的xAI,技术和算力的发展历经了几个时代,但似乎马斯克的吸金能力一直…

代码随想录算法训练营day21|530.二叉搜索树的最小绝对值差、501.二叉搜索树中的众数、236.二叉树的最近公共祖先

二叉搜索树的最小绝对值差 递归法 首先需考虑这是一个二叉搜索树,在中序遍历后的结果为从小到大的一个序列,寻找二叉搜索树的最小绝对值差,只需比较一个节点与之后的差值即可。在遍历的过程中,我们需要一个节点保存前节点…

短道速滑短视频:四川京之华锦信息技术公司

短道速滑短视频:冰雪激情的视觉盛宴 随着冬奥会的热度不断攀升,短道速滑作为其中一项紧张刺激、充满观赏性的运动,受到了越来越多人的关注。而在社交媒体和短视频平台的助力下,短道速滑短视频成为了人们了解、欣赏这项运动的新窗…

vxe-form-design 表单设计器的使用

vxe-form-design 在 vue3 中表单设计器的使用 查看官网 https://vxeui.com 安装 npm install vxe-pc-ui // ... import VxeUI from vxe-pc-ui import vxe-pc-ui/lib/style.css // ...// ... createApp(App).use(VxeUI).mount(#app) // ...使用 github vxe-form-design 用…

Python在忘mysql密码后该如何重新连mysql

步骤一 先到mysql的bin目录下 步骤二 用mysqld delete mysql 把之前的库删了 步骤三 通过管理员模式进去后 用命令mysqld --skip-grant-tables越过验证 再输入mysql -u root 直达账户 步骤四 用FLUSH PRIVILEGES; ALTER USER rootlocalhost IDENTIFIED BY new_password; 指…

Echarts x轴坐标二级分组

在使用echarts 封装组件的时候,偶尔会遇到需要x轴坐标进行二层分组的需求。那么如何对echarts 进行二层分组呢,有以下几个步骤: 仅介绍二层分组的逻辑。有兴趣的可以进行三层延伸。 1,修改echarts Options 中xAxis 的配置。 此…

【机器学习】K-近邻算法(KNN)全面解析

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 K-近邻算法(KNN)全面解析概述1. 基本概念与原理1.1 KNN算…

Excel表格保护密码遗忘怎么办?三秒钟破解密码,轻松解锁!

在我们的日常工作中,Excel表格是一个非常实用的工具,但在某些情况下,我们可能会遇到密码忘记的问题,或者在尝试打开或删除文件时被锁定。别担心,这里有三个简单的解决方法来帮助您解决问题。 一、尝试默认密码或常见密…

使用 Orange Pi AIpro开发板基于 YOLOv8 进行USB 摄像头实时目标检测

文章大纲 简介算力指标与概念香橙派 AIpro NPU 纸面算力直观了解 手把手教你开机与基本配置开机存储挂载设置风扇设置 使用 Orange Pi AIpro进行YOLOv8 目标检测Pytorch pt 格式直接推理NCNN 格式推理 是否可以使用Orange Pi AIpro 的 NPU 进行推理 呢?模型开发流程…

gitlab push 代码,密码正确,仍然提示HTTP Basic: Access denied. The provided password

HTTP Basic: Access denied. The provided password or token is incorrect or your account has 2FA enabled and you must use a personal access token instead of a password gitlab 登录账户密码确认正确,登录获取代码仍然提示以上问题,解决方案 …

①单细胞学习-数据读取、降维和分群

目录 ①数据读取 ②计算线粒体基因比例 ③分开进行质控 ④两组单细胞数据合并 ⑤细胞周期评分 ⑥降维标准流程 降维 UMAP可视化 选择分群 ⑦marker基因 分析marker基因 marker基因可视化 ⑧细胞定群命名 单细胞的数据格式学习:单细胞 10X 和seurat对象…

【软件设计师】算法

1、算法的效率 时间复杂度:程序从开始到结束所需要的时间 空间复杂度:算法在运行过程中临时占用存储空间大小的度量 时间渐近复杂度:时间复杂度由最高次幂决定(判断大小技巧:将n10代入) O(log2 n):二分查找法 O(n):for…

家政预约小程序07服务分类展示

目录 1 创建服务分类页面2 侧边栏选项卡配置3 配置数据列表4 从首页跳转到分类页总结 上一篇我们开发了首页的服务展示功能,本篇我们讲解一下服务分类功能的开发。在小程序中通常在底部导航栏有一个菜单可以展示所有服务,侧边选项卡可以展示分类信息&…

Python零基础一天丝滑入门教程(非常详细)

目录 第1章 初识python 第1节 python介绍 1.为什么要学习Python? 2.python排名 3.python起源 4.python 的设计目标 第2节 软件安装 第2章 快速上手:基础知识 第1节 Python3 基础语法 Python 变量 字面量 数据类型转换 Python3 注释 数据类…

垂类短视频:四川鑫悦里文化传媒有限公司

垂类短视频:内容细分下的新媒体力量 随着移动互联网的迅猛发展和智能手机的普及,短视频已成为当下最受欢迎的媒介形式之一。四川鑫悦里文化传媒有限公司而在短视频领域,一个新兴的概念——“垂类短视频”正逐渐崭露头角,以其独特…

设计模式 21 备忘录模式 Memento Pattern

设计模式 21 备忘录模式 Memento Pattern 1.定义 备忘录模式是一种行为型设计模式,它允许你将一个对象的状态保存到一个独立的“备忘录”对象中,并在之后恢复到该状态。 2.内涵 主要用于以下场景: 需要保存对象状态以备恢复: 当…