2.2 关系代数运算

2023-05-16

2.2.1 关系代数的五个基本操作 

考核要求:达到“简单应用”层次 
知识点:五个基本操作的含义和运算应用


(1)并():两个关系需有相同的关系模式,并的对象是元组,由两个关系所有元组构成。 
  RUS≡{t| t∈R ∨t∈S} 
(2) 差(-):同样,两个关系有相同的模式,R和S的差是由属于R但不属于S的元组构成的集合。 
  R-S≡{t| t∈R ∧t 不属于S} 
(3)笛卡尔积(×):对两个关系R和S进行操作,产生的关系中元组个数为两个关系中元组个数之积。 
  R×S≡{t| t=< tr,ts>∧tr∈R∧ts ∈S} 
(4) 投影(σ):对关系进行垂直分割,消去某些列,并重新安排列的顺序。 
(5) 选择(π):根据某些条件关系作水平分割,即选择符合条件的元组。 

2.2.2 关系代数的四个组合操作 
考核要求:达到“简单应用”层次 
知识点:四个组合操作的含义和运算应用


(1)交():R和S的交是由既属于R又属于S的元组构成的集合。 
(2)联接:包括θ(算术比较符)联接和F(公式)联接. 
 选择R×S中满足iθ(r+j)或F条件的元组构成的集合; 
概念上比较难理解,关键理解运算实例 
等值联接(θ为等号“=”的联接)。 
(3)自然联接(RS):在R×S中,选择R和S公共属性值均相等的元组,并去掉R×S中重复的公共属性列。 如果两个关系没有公共属性,则自然联接就转化为笛卡尔积。 
(4)除法(÷):首先除法的结果中元数为两个元数的差,

R÷S的操作思路如下---把S看作一个块,如果R中相同属性集中的元组有相同的块, 且除去此块后留下的相应元组均相同,那么可以得到一条元组, 所有这些元组的集合就是除法的结果

对于上述的五个基本操作和四个组合操作,应当从实际运算方面进行理解和运用。 

应用举例

设有关系R和S(如下:)

计算:

 

2.2.3 关系代数表达式及应用 
考核要求:达到“简单应用”层次 
知识点:关系代数表达式的应用


本节的内容是有关实际应用,应该多看例题,多做习题,必须达到以下要求: 能够根据给出的关系代数表达式计算关系值,也能够根据相应查询要求列出关系表达式。 

(1)在列关系表达式时,通常有以下形式: 
π...(σ...(R×S))或者π...(σ...(RS)) 
首先把查询涉及到的关系取来,执行笛卡尔积或自然联接操作得到一张大的表格,然后对大表格执行水平分割(选择)和垂直分割(投影)操作。 
(2)当查询涉及到否定或全部的逻辑时,往往要用到差或除法操作。 

  用关系代数表示数据查询的典型例子


      [例]设教学数据库中有3个关系:
          学生关系S(SNO,SNAME,AGE,SEX)
          学习关系SC(SNO,CNO,GRADE)
          课程关系C(CNO,CNAME,TEACHER)

     下面用关系代数表达式表达每个查询语句。


(1) 检索学习课程号为C2的学生学号与成绩。
    πSNO,GRADE(σ CNO='C2'(SC))


(2) 检索学习课程号为C2的学生学号与姓名
   πSNO,SNAME(σ CNO='C2'(SSC))
    由于这个查询涉及到两个关系S和SC,因此先对这两个关系进行自然连接,同一位学生的有关的信息,然后再执行选择投影操作。

此查询亦可等价地写成:
    πSNO,SNAME(S)(πSNO(σ CNO='C2'(SC)))
    这个表达式中自然连接的右分量为"学了C2课的学生学号的集合"。这个表达式比前一个表达式优化,执行起来要省时间,省空间。


(3)检索选修课程名为MATHS的学生学号与姓名。

    πSNO,SANME(σ CNAME='MATHS'(SSCC))


(4)检索选修课程号为C2或C4的学生学号。
    πSNO CNO='C2'∨CNO='C4'(SC))


(5) 检索至少选修课程号为C2或C4的学生学号。
    π11=4∧2='C2'∧5='C4'(SC×SC))
      这里(SC×SC)表示关系SC自身相乘的乘积操作,其中数字1,2,4,5都为它的结果关系中的属性序号。

  比较这一题与上一题的差别。


(6) 检索不学C2课的学生姓名与年龄。
    πSNAME,AGE(S)-πSNAME,AGE(σ CNO='C2'(SSC))
    这个表达式用了差运算,差运算的左分量为"全体学生的姓名和年龄",右分量为"学了C2课的学生姓名与年龄"。


(7)检索学习全部课程的学生姓名。
编写这个查询语句的关系代数过程如下:
(a) 学生选课情况可用πSNO,CNO(SC)表示;
(b) 全部课程可用
πCNO(C)表示;
(c) 学了全部课程的学生学号可用除法操作表示。
        操作结果为学号SNO的集合,该集合中每个学生(对应SNO)与C中任一门课程号CNO配在一起都在
πSCOCNOSC 中出现(即SC中出现),所以结果中每个学生都学了全部的课程(这是"除法"操作的含义):
    πSNO,CNO(SC)÷πCNO(C)
(d) 从SNO求学生姓名SNAME,可以用自然连结和投影操作组合而成:
    πSNAME(S  (πSNO,CNO(SC)÷πCNO(C)))
这就是最后得到的关系代数表达式。


(8) 检索所学课程包含S3所学课程的学生学号。
注意:学生S3可能学多门课程,所以要用到除法操作来表达此查询语句。
      学生选课情况可用操作
  πSNO,CNO(SC)表示;
      所学课程包含学生S3所学课程的学生学号,可以用除法操作求得:

    πSNO,CNO(SC)÷  πCNO(σ SNO='S3'(SC))

 
(9) 将新课程元组('C10','PHYSICS','YU')插入到关系C中
    (C∪('C10','PHYSICS','YU'))


(10) 将学号S4选修课程号为C4的成绩改为85分。
    (SC-('S4','C4',?)∪('S4','C4',85))
    修改操作用代数表示分两步实现:先删去原元组,再插入新元组。题目中未给出原先的成绩,所以用"?"代替,检索时可忽略。

 


2.2.4 扩充的关系代数操作 
考核要求:达到“识记”层次 
知识点:了解“外联接”和“外部并”的含义

 


 

注意:(1)“外联接”、“左外联接”、“右外联接”和“自然连接”的差异。 
(2)“外部并”和“并”的差异

 

转载于:https://www.cnblogs.com/hephec/p/4562123.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2.2 关系代数运算 的相关文章

  • .db文件打开方式

    有时在工作中 xff0c 数据库格式db后缀的格式 xff0c 直接是打不开的 xff0c 所以我这里使用了数据库管理工具 xff0c 步骤如下 1 在电脑安装 Navicat Premium xff0c 安装后在桌面生成图标 xff0c
  • MathType的配置问题;将word中的公式转换为mathtype格式失败,缺少OMML2MML.XSL

    安装MathType后打开word报错 打开会出现以下问题 xff1a 首先 xff0c 把startup添加到word的信任中心 xff1a 要确保路径被office信任 依次打开word gt 文件 gt 选项 gt 信任中心 gt 信
  • XMPP系列(四)---发送和接收文字消息,获取历史消息功能

    今天开始做到最主要的功能发送和接收消息 获取本地历史数据 先上到目前为止的效果图 xff1a 首先是要在XMPPFramework h中引入数据存储模块 xff1a 聊天记录模块的导入 import 34 XMPPMessageArchiv
  • linux新增磁盘后,用fdisk等命令查询不到

    ls sys class scsi host xff08 会看到有host0 host1 hostN xff0c 对每个host进行如下操作 xff09 echo 34 34 gt sys class scsi host host0 sca
  • ubuntu上源码编译安装mysql5.7.27

    一 查看操作系统环境和目录结构 xff0c 并创建mysql用户和组 xff0c 以及规划安装mysql所需要的目录 cat etc issue 查看发行版本信息 xff1a cat proc version 查看正在运行的内核版本信息 u
  • (转-收集)MSSQL手工注入语句集合

    and exists select from sysobjects 判断是否是MSSQL and exists select from tableName 判断某表是否存在 tableName为表名 and 1 61 select 64 6
  • 滚动视图 UIScrollView

    UIScrollView xff1a 提供可以显 示 大于应 用窗 口的内容功能的控件 用户可以通过 手势使内容滚动和缩放 从 而查 看全部内容 初始化一个UIScrollView的对象 1 UIScrollView scroll 61 U
  • 基于steam的游戏销量预测 — PART 1 — 爬取steam游戏相关数据的爬虫

    语言 xff1a python 环境 xff1a ubuntu 爬取内容 xff1a steam游戏标签 xff0c 评论 xff0c 以及在 steamspy 爬取对应游戏的销量 使用相关 xff1a urllib xff0c lxml
  • WechatHelper

    using System using System Collections Generic using System Configuration using System IO using System Linq using System
  • Go——range复用临时变量

    range复用临时变量 span class token keyword package span main span class token keyword import span span class token string 34 s
  • cf 1169 C Increasing by Modulo

    cf 1169 C Increasing by Modulo 题意 给你一个n个数字的序列 xff0c 有一个操作是选其中的一些数字来 43 1 xff0c 最后使得序列每一个数取模m后是一个非严格单调递增的序列 xff0c 问至少需要多少
  • 洛谷P1605 迷宫 题解

    洛谷P1605 迷宫 题解 题目背景 问题描述 数据规模 输入 输出 输入输出样例 输入样例 1 xff1a 输出样例 1 xff1a 题解 C 43 43 代码 题目背景 问题描述 给定一个N M方格的迷宫 xff0c 迷宫里有T处障碍
  • linux禁用nouveau grub,NVIDIA驱动安装之禁用nouveau

    最近实验室的服务器英伟达驱动重启之后就不能用了 xff0c 查明原因原来是因为Ubuntu自动升级了内核 xff0c 导致原本的驱动失效了 xff0c 所以一定不要没事干去升级内核 xff0c 下面介绍一下重装驱动的曲折之旅 0x00更改b
  • Python:使用Kivy将python程序打包为apk文件

    1 概述 Kivy是一套Python下的跨平台开源应用开发框架 xff0c 官网 xff0c 我们可以用 它来将Python程序打包为安卓的apk安装文件 以下是在windows环境中使用 安装和配置的过程中会下载很多东西 xff0c 确保
  • Ubuntu16.04进入挂起或休眠状态时按任何键都无法唤醒问题解决办法

    挂起 xff08 待机 xff09 计算机将目前的运行状态等数据存放在内存 xff0c 关闭硬盘 外设等设备 xff0c 进入等待状态 此时内存仍然需要电力维持其数据 xff0c 但整机耗电很少 恢复时计算机从内存读 出数据 xff0c 回
  • java 兔子繁殖问题_兔子繁殖问题

    兔子繁殖问题 设有一对新生的兔子 xff0c 从第三个月开始他们每个月都生一对兔子 xff0c 新生的兔子从第三个月开始又每个月生一对兔子 按此规律 xff0c 并假定兔子没有死亡 xff0c 20个月后共有多少个兔子 xff1f 要求编写
  • 尝试一下sql server2016里面的json功能

    前2天下载了一个2016的rc版本来玩一下 xff0c 首先感觉是 开发者版本免费啦 xff01 xff01 撒花 xff01 xff01 xff01 另外一个东西 sql server 2016能支持json 的解析和应用啦 xff0c
  • MPICH 3.2安装

    step 1 下载 在官网下载最新版 http www mpich org downloads step 2 解压安装 tar zxvf mpich 3 2 tar gz step 3 进入mpich 3 2 文件夹 xff0c 并配置安装
  • WEB网站无法打开某种格式资源的解决办法

    近日 xff0c 在发布网站的时候发现了一个问题 大致情况描述为 xff1a 网站中所有的文件类型的附件存放在同一个文件夹下 xff0c 可是在页面上 xff0c doc格式 tiff格式的文件都可以正常打开 xff0c 唯独ceb格式的文
  • Go——defer陷阱

    defer陷阱 defer带来了两个副作用 xff1a 对返回值的影响对性能的影响 defer和函数返回值 defr中如果引用了函数的返回值 xff0c 则因引用形式不同会导致不同的结果 xff0c 这些结果往往给初学者造成很大的困惑 xf

随机推荐