关系代数运算So Easy

关系代数是以关系为运算的一组高级运算的集合。由于定义为属性个数 相同的元组的集合,因此集合代数的操作就可以引入到关系代数中。关系代数也可以看做是一种抽象的查询语言,是对关系的运算来表达查询的。任何一种运算都是将一定的运算符作用于一定的运算对象上,得到预期的运算结果。所以运算对象、运算符、运算结果是运算的三大要素。

关系代数的运算对象是关系,运算结果亦为关系。关系代数用到的运算符包括四类:集合运算符、专门的关系运算符、算术比较符和逻辑运算符。如下表:

关系代数可分为两类:传统的集合操作:并、差、交、笛卡尔积(乘)、笛卡尔积的逆运算(除法)和扩充的关系操作:对关系进行垂直分割(投影)、水平分割(选择)、关系的结合(连接、自然连接)。

一、五个基本操作:

1.并 (Union):关系R和S具有相同的关系模式,R和S的并是由属性R和S的元组构成的集合。 形式定义如下:

R∪S={t|t∈R∨ t∈S} , t 是元组变量,R和S的元素相同 

其结果由R和S的元素组成

2.差 (Difference): 关系R和S具有相同的关系模式,R和S的差由属于R但不属于S的元组构成的集合。 形式定义如下:

R-S={t|t∈R ∧ t¢S)  t 是元组变量,R和S的元素相同

其结果由属于R不属于S的所有元组构成

3.笛卡尔积(Cartesian Product) :广义笛卡尔积是一个(r+s)列的元组的集合。形式定义如下:

4.投影(Projection):对一个关系进行垂直分割,消去某些列,并重新安排列的顺序。记作:

  ΠA(R) = { t[A] | t∈R }

其中A为R中的属性列。

5.选择(Selection):根据某些条件对关系做水平分割,即选取符合条件的元组。

σF(R) = {t|t∈R ∧ F(t)=true}

σ为选择元算符,F表示选择条件,它是一个逻辑表达式,取逻辑值‘真’或‘假’。

举例说明:下面为关系R和关系S 两张表:

(1) 并运算              (2)差运算               (3)笛卡尔积运算

                  

(5)投影

(6)选择

二、四个组合操作

1.交(Intersection):由属于R和S的元组构成的集合。记作:

R∩S={t|t∈R∧t∈S}由于R∩S=R(R-S),或R∩S=S-S(S-R) 得到的,因此交操作不是一个独立的操作。

2.连接(Join):连接也称为θ连接,它是从两个关系的笛卡尔积中选取属性中满足一定条件的元组。记作:

其中A和B分别为R和S上度数相等且可比的属性组。θ是比较运算符。连接运算从R和S的广义笛卡尔积R×S中选取 (R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系θ的元组。
举例说明:下图为关系R和S两张表

下图表示关系R和S的连接操作

连接操作中比较重要且常用的连接是等值连接和自然连接。等值连接:θ为“=”时的连接运算称为等值运算,它是从R和S中选取R中的A属性组上的元组等于S中B属性组上的元组。自然连接(Natural join):自然连接用R连接R ? S表示,是一种特殊的等值连接,一般使用在R和S中有公共属性的情况中。例如,R和S中有相同的属性B记作:

举例:有关系R和关系S两张表
下图表示关系R和S的自然连接:

3.除法 (Division):设关系R和S的元数分别为r和s(设r>s>0),那么R÷S是一个(r-s)元的元组集合。

例如:有三张表,分别是R、COURSE1和COURSE2
(1)R÷COURSE1 表示 至少选修COURSE1课程的学生名单

(2)R÷COURSE2 表示至少选修COURSE2课程的学生名单

关系代数演算So Easy的更多相关文章

  1. 【转】Windows下使用libsvm中的grid.py和easy.py进行参数调优

    libsvm中有进行参数调优的工具grid.py和easy.py可以使用,这些工具可以帮助我们选择更好的参数,减少自己参数选优带来的烦扰. 所需工具:libsvm.gnuplot 本机环境:Windo ...

  2. Struts2 easy UI插件

    一.easy UI是类似于jQuery UI的插件库,它提供了丰富的各种常用插件:tree.datagrid... tree插件: 语法:$(selector).tree([settings]); 常 ...

  3. Easy UI常用插件使用

    一.easy UI是类似于jQuery UI的插件库,它提供了丰富的各种常用插件:tree.datagrid... tree插件: 语法:$(selector).tree([settings]); 常 ...

  4. UVA-11991 Easy Problem from Rujia Liu?

    Problem E Easy Problem from Rujia Liu? Though Rujia Liu usually sets hard problems for contests (for ...

  5. CodeForces462 A. Appleman and Easy Task

    A. Appleman and Easy Task time limit per test 1 second memory limit per test 256 megabytes input sta ...

  6. easy ui插件

    简介: easy UI是类似于jQuery UI的插件库 注意:多脚本同时使用时,注意脚本冲突问题. 常用插件: 1.tree插件(tree插件实现动态树形菜单) 2.datagrid插件(datag ...

  7. 用TPP开启TDD的easy模式

    Test-Drived Development 测试驱动开发三步曲:写一个失败的测试用例->编写生产代码通过这个测试用例(transformation)->重构(refactor).重构是 ...

  8. Easy Sysprep更新日志-skyfree大神

    Easy Sysprep更新日志: Skyfree 发表于 2016-1-22 13:55:55 https://www.itsk.com/forum.php?mod=viewthread&t ...

  9. [官方软件] Easy Sysprep v4.3.29.602 【系统封装部署利器】(2016.01.22)--skyfree大神

    [官方软件] Easy Sysprep v4.3.29.602 [系统封装部署利器](2016.01.22) Skyfree 发表于 2016-1-22 13:55:55 https://www.it ...

随机推荐

  1. CLR via C# 第五章学习记录(更新中)

    1.设置全局溢出检查,项目属性->生成->高级->检测运算上溢/下溢 2.局部使用溢出检测 Byte b = ; b = ));// 不检测溢出 checked// 检测溢出代码段 ...

  2. Netty入门系列(3) --使用Netty进行编解码的操作

    前言 何为编解码,通俗的来说,我们需要将一串文本信息从A发送到B并且将这段文本进行加工处理,如:A将信息文本信息编码为2进制信息进行传输.B接受到的消息是一串2进制信息,需要将其解码为文本信息才能正常 ...

  3. 51nod1103(抽屉原理)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1103 题意:中文题诶- 思路:抽屉原理 对于两个数a, b, ...

  4. link-1-STL 标准模板库

    STL(Standard Template Library,标准模版库)是C++语⾔言标准中的重要组成部分.STL以模板类和模版函数的形式为程序员提供了了各种数据结构和算法的实现,程序员吐过能够充分的 ...

  5. C语言实现折半插入算法

    #include <stdio.h> int BInsertSort(int array[],int left,int right){ //接收主函数调用语句中的实参传到这里的形参里 in ...

  6. from appium import webdriver 报错

    from appium import webdriver 报错 看看你的文件是不是就叫appium

  7. STP-9-处理RSTP中的拓扑变化

    STP能识别四种不同的拓扑变化事件, 而RSTP只有当非边界端口从非转发状态变为转发状态才认为发生了拓扑变化事件 因为刚变为转发状态的端口可以为一些mac地址提供比之前更好的路径,CAM表需要更新.失 ...

  8. 几款常用的高质量web前端框架

    http://blog.csdn.net/qianduankuangjia/article/details/78042944

  9. NET Core 2.0使用Cookie认证实现SSO单点登录

    NET Core 2.0使用Cookie认证实现SSO单点登录 之前写了一个使用ASP.NET MVC实现SSO登录的Demo,https://github.com/bidianqing/SSO.Sa ...

  10. 048 Rotate Image 旋转图像

    给定一个 n × n 的二维矩阵表示一个图像.将图像旋转 90 度(顺时针).注意:你必须在原矩阵中旋转图像,请不要使用另一个矩阵来旋转图像.例 1:给出的输入矩阵 = [  [1,2,3],  [4 ...