数据库系统概论期末经典大题讲解(用关系代数进行查询)

今天也是结束的最为密集的考试周,在分析过程中自己也有些许解题的感悟,在此分享出来,希望能帮到大家期末取得好成绩。


一.专门的关系运算

1.选择(σ)

选择操作符用于从关系中选择满足特定条件的元组

例如,σ 年龄>20 (学生) 表示选择学生表中年龄大于20的学生(默认取出全部信息)

eg: 

下方是一个标准的学生表:

学生

Sno

Sname

Ssex

Sage

Sdept

98010

张三

20

计算机系

99001

张敏

20

数学系

99002

刘丰

21

信息系

99003

王翔

19

计算机系

99004

陆逸

18

信息系

99006

陈敏

18

数学系

99007

扬阳

18

计算机系

99008

谷正

17

数学系

接下来我们用关系代数表示在学生课程数据库中查询计算机系的全体学生的操作 :

σSdept= ‘计算机系’ (学生) 或者 σ5= ‘计算机系’ (学生)   5代表第五列。

我们经常去选择第一种写法。

 选择完后的结果如下:

2.投影(π)

 投影操作符用于从关系中选择指定的属性  (即选择指定的列)

 例如,π 学号,姓名 (学生) 表示选择学生表中的学号和姓名属性

eg: 

学生

Sno

Sname

Ssex

Sage

Sdept

98010

张三

20

计算机系

99001

张敏

20

数学系

99002

刘丰

21

信息系

99003

王翔

19

计算机系

99004

陆逸

18

信息系

99006

陈敏

18

数学系

99007

扬阳

18

计算机系

99008

谷正

17

数学系

在学生课程数据库中,查询学生的姓名和所在系 :

3.连接(⋈) 

连接操作符用于将两个关系进行连接,通常是在它们的公共属性上进行  (一个表不能够满足我的需求)

例如,学生表和选课表可以通过学号进行连接,得到学生选课的信息 

eg:

已知关系R, S如下:       R           

                                        S        

 求:

按照要求连接后的表格为:

 连接的分类:

等值连接:

  • 等值连接是基于两个关系中的属性之间的相等条件来进行连接的。具体来说,如果两个关系 R 和 S 中存在一个属性 A,使得 R.A = S.A,那么这两个关系就可以进行等值连接
  •  等值连接的结果是一个新的关系,包含了满足等值条件的 R 和 S 的元组的组合

自然连接:

  • 自然连接是基于两个关系中相同属性的相等条件来进行连接的。具体来说,自然连接会自动查找两个关系中相同属性名的属性,并根据这些属性进行等值连接
  • 自然连接的语法通常表示为 R ⨝ S,其中 R 和 S 是要进行自然连接的两个关系
  • 自然连接的结果是一个新的关系,包含了满足相同属性值的 R 和 S 的元组的组合,并且会自动去除重复的属性

等值连接和自然连接都是用于将两个关系进行连接操作的方法,它们的区别在于连接的条件和结果的属性 

4.除法操作(÷) 

R ÷ S   其中,R 和 S 分别是两个关系,R 的属性必须是 S 的属性的超集(全部所有才用÷)

例子:假设有两个关系:学生(学号,姓名)和选课(学号,课程名)。现在想要找出选修了所有课程的学生,可以使用除法操作符来实现:

学生 ÷ π 学号 (选课)


 二.较为综合的例题

第一个 

 已知学生选课数据库模式:

  • Student(Sno, Sname,Sage, Sdept)
  • Course(Cno,Cname)
  • SC(Sno,Cno,Score) 

用关系代数进行如下查询:

选修了2号课程的学生的姓名?

计算机系有不及格课程的学生名单

学生张林的“数据库原理”成绩

查询选修了学号为“00002”的学生所选修的所有课程的学生学号和姓名

第二个

图书馆管理数据库

  • 读者(读者编号, 姓名, 单位)
  • 图书(书号, 书名, 作者, 出版社, 单价, 类型)
  • 借阅记录(读者编号, 书号, 借阅日期, 应还日期)
  • 还书记录(读者编号, 书号, 归还日期) 

 

3、 查询8号读者2003年3月10日所借图书的相关信息

4、 查询超期归还图书的读者姓名和单位

5、 查询借阅过《天龙八部》的读者的信息


好啦,这次的内容就先到这里啦,下一次大概率是数据库范式,最小依赖集个找主码相关的内容。 

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

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

相关文章

导出主机上所有docker 镜像并导入到其它主机

保存镜像列表到文件 docker images --format “{{.Repository}}:{{.Tag}}” > image_list.txt 导出列表中所有镜像到tar文件 cat image_list.txt | xargs -L 1 docker save -o all_images.tar 导入tar包中所有镜像 docker load -i all_images.tar

异常处理 springboot

全局异常处理 RestcontrollerAdvice Exceptonhandler package com.it.Exception;import com.it.pojo.Result; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice;/*全局异常处理器…

如何制定公司网络安全战略

网络安全可以保护公司的重要信息免受恶意软件和数据泄露等威胁。网络安全策略列出了您公司的 IT 系统当前面临的风险、您计划如何预防这些风险,以及如果发生这些风险该怎么办。 让本文成为您制定有效网络安全策略的一站式指南。我们将讨论网络安全风险评估以及策略…

【图论】重庆大学图论与应用课程期末复习资料2-各章考点(填空证明部分)(私人复习资料)

图论各章考点 一、图与网络的基本概念二、树三、连通性四、路径算法五、匹配六、行遍性问题七、平面图 一、图与网络的基本概念 生成子图:生成子图 G ’ G’ G’中顶点个数V’必须和原图G中V的数量相同,而 E ’ ∈ E E’∈E E’∈E即可。顶点集导出子图…

Flink 读写Doris

Flink Doris Connector 可以支持通过 Flink 操作(读取、插入、修改、删除) Doris 中存储的数据。 Flink Doris Connector Sink的内部实现是通过 Stream load 服务向Doris写入数据, 同时也支持 Stream load 请求参数的配置设定。 版本兼容如下: Connector Flink

【QML】QML与cpp交互(一)—— QML直接调用cpp函数

目录 1、cpp 创建一个类 2、将类对象暴露给QML 3、QML通过对象直接调用cpp函数 1、cpp 创建一个类 类模板如下: #include <QtCore/QObject>class vacUdpClient: public QObject {Q_OBJECT public: vacUdpClient(QObject* parent nullptr): QObject(parent) {}// Q…

Cesium.Geometry.Plane.createPlaneGeometry的用法

var planeGeometry Cesium.Geometry.Plane.createPlaneGeometry(origin, normal, width, height);参数说明&#xff1a; origin&#xff1a;Plane的原点&#xff0c;即法线与平面相交的点。normal&#xff1a;Plane的法线&#xff0c;用于定义平面的方向。width&#xff1a;P…

JVM类加载全过程

Java虚拟机类加载的全过程&#xff0c;即加载&#xff0c;验证&#xff0c;准备&#xff0c;解析&#xff0c;初始化 一、加载 加载 是 类加载过程中的一个阶段&#xff0c; 有以下三部分组成 1&#xff09;通过一个类的全限定名来获取定义此类的二进制流 2&#xff09;将这…

通达OA inc/package/down.php接口存在未授权访问漏洞

声明 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 一. 产品简介 通达OA&#xff08;Office Anywhere网络智能办公系统&am…

Qt designer中使用QSplitter创建推拉窗口,类似 Cobalt Strike 中主界面上下推拉的窗口

参考链接&#xff1a; Qt designer中使用QSplitter创建推拉窗口_qt designer splitter-CSDN博客 Qt Designer中如何添加QSplitter_qtdesigner splitter-CSDN博客 QSplitter 设置初始值大小&#xff0c;类似比例&#xff0c;不需要太精确&#xff08;比如&#xff1a;UI界面高…

Batch Normalization

1.是什么&#xff1f; 批量归一化&#xff08;Batch Normalization&#xff09;&#xff0c;由Google于2015年提出&#xff0c;是近年来深度学习&#xff08;DL&#xff09;领域最重要的进步之一。该方法依靠两次连续的线性变换&#xff0c;希望转化后的数值满足一定的特性&am…

Python一些简单例题(基础篇)

因为是基础就不怎么做解释了&#xff0c;当然简单的题也不能忽视&#xff0c;它们稍微改改就又是一个新代码&#xff0c;当然如果有不懂的也可以询问留言&#xff01;&#xff01;&#xff01; 下面我直接给出代码&#xff1a; 1.打印出一个10 * 10的“*”号矩阵 row, colum…

第7章 JavaScript动态渲染页面爬取

目录 1. Selenium的使用1.1 准备工作安装selenium安装WebDriverWebDriver配置 1.2 基本用法1.3 初始化浏览器对象1.4 访问页面1.5 查找节点单个节点多个节点 1.6 节点交互1.7 动作链1.8 运行JavaScript1.9 获取节点信息获取属性获取文本值获取ID、位置、标签名和大小 1.10 切换…

10、外观模式(Facade Pattern,不常用)

外观模式&#xff08;Facade Pattern&#xff09;也叫作门面模式&#xff0c;通过一个门面&#xff08;Facade&#xff09;向客户端提供一个访问系统的统一接口&#xff0c;客户端无须关心和知晓系统内部各子模块&#xff08;系统&#xff09;之间的复杂关系&#xff0c;其主要…

利用DateFormat、Date、Calendar等相关类,编程实现如下功能

&#xff08;1&#xff09;用户输入2个日期&#xff0c;第一个日期用整数形式输入&#xff0c;把输入的整数设置为日历对象1的年月日的值。第二个日期以字符串形式输入&#xff0c;形如“2022-10-25”&#xff0c;并设置为日历对象2的年月日的值。将2个日期以“xx年xx月xx日”的…

04、pytest运行多个测试用例

官方用例 目录结构 course_04 | |----subdir | | | |----sample03_test.py | | | |----test_sample04.py | |----sample02_test.py | |----test_sample01.py# content of test_sample01.pydef test_simple01():print("test simple01")assert 0# content of tes…

从零开始学习 JS APL(二):完整指南和实例解析

大家好&#xff01;这里是关于JS APL第二部分的知识点和笔记以及练习题 目录 大家好&#xff01;这里是关于JS APL第二部分的知识点和笔记以及练习题 我们分以下几点来说&#xff1a; 1、事件监听&#xff08;绑定&#xff09;&#xff1a; 目标&#xff1a;能够给 DOM元素…

@PostConstruct使用详解

一、简介 在Spring应用程序中启动时&#xff0c;有时需要在所有Bean都已加载&#xff0c;初始化并准备好之后执行某些自定义代码。这时&#xff0c;Spring提供了一个可用的方式&#xff0c;即使用PostConstruct注解。这个注解用于标记一个方法&#xff0c;这个方法将在Bean初始…

操作系统——进程同步

目录 一、信号量相关函数 1. 创建信号量集 2. 获取信号量集 3. 等待、通知信号量集 4. 控制信号量集 二、简单进程同步 1. 创建信号量集 2. P操作 3. V操作 4. 删除信号量集 5. 测试&#xff1a; 三、生产者与消费者 1. 创建、删除共享内存及信号量集 2. 单一生产…