关系演算

概述

(这部分的内容大多与离散数学有关,我没有相关基础,所以现在只是简单看一下)
关系演算是以数理逻辑中的谓词演算为基础的。
关系演算是描述关系运算的另一种思维方式。
SQL语言是继承了关系代数和关系演算各自的优点所形成的。
按照谓词变量的不同,可分为关系元组演算和关系域演算:
关系元组演算是以元组变量作为谓词变量的基本对象。
关系域演算是以域变量作为谓词变量的基本对象。

关系元组演算

基本形式

关系元组演算公式的基本形式:
{t|P(t)}
上式表示:所有使谓词P为真的元组t的集合
t是元组变量
t∈r表示元组t在关系r中
t[A]表示元组t的分量,即t在属性A上的值
P是与谓词逻辑相似的公式,P(t)表示以元组t为变量的公式

定义

P(t)递归定义:
关系元组演算的基本形式:{t|P(t)}
其中公式P(t)可以递归地进行构造:
三种形式的原子公式是公式:
s∈R、s[A]θc、s[A]θu[B]
如果P是公式,那么┐P也是公式
如果P1,P2是公式,则P1∨P2,P1∧P2也是公式。
如果P(t)是公式,R是关系,则∃(t∈R)(P(t))和∀(t∈R)(P(t))也是公式。
需要时可加括弧
上述运算符的优先次序自高至底为:括弧;θ;∀;∃;┐;∧;∨
公式只限于以上形式

存在量词和全称量词∃∀

运算符∃∀,又称为量词,前者称“存在量词”,后者称“全称量词”
而被∃或∀限定的元组变量t,或者说,元组变量t前有存在量词或全称量词,则该变量被称为“约束变量”,否则被称为“自由变量”。
例如:“检索出年龄不是最小的所有同学”
{t|t∈Student∧∃(u∈Student)(t[Sage]>u[Sage])}

等价变换

P(t)公式,如谓词演算一样,也有一系列演算的等价性

关系域演算

基本形式

关系域演算公式的基本形式:{<x1,x2,...,xn>|P(x1,x2,...,xn)}
其中xi代表域变量或常量,P为以xi为变量的公式。

递归定义

公式P可以递归地进行构造:
·<x1, x2, …, xn>∈r,其中r为n个属性上的关系,x1, x2, …, xn为域变量或域常量;
·x

MOOC 数据库笔记(五):关系演算的更多相关文章

  1. MOOC 数据库笔记(三):关系模型之基本概念

    关系模型的基本概念 关系模型简述 1.最早由E.F.Codd在1970年提出. 2.是从表(Table)及表的处理方式中抽象出来的,是在对传统表及其操作进行数学化严格定义的基础上,引入集合理论与逻辑学 ...

  2. MOOC 数据库笔记(四):关系代数

    关系代数 关系代数概述 特点 基于集合,提供了一系列的关系代数操作:并.差.笛卡尔积(广义积).选择.投影和更名等基本操作 以及交.连接和关系除等扩展操作,是一种集合思维的操作语言. 关系代数操作以一 ...

  3. MySQL数据库笔记五:多表查询

    1.表与表之间的关系 一对一:用户表和身份信息表,用户表是主表 例如:男人表 .女人表 create table man( mid int primary key auto_increment, mn ...

  4. Django开发笔记五

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.页面继承 定义base.html: <!DOC ...

  5. Linux系统运维笔记(五),CentOS 6.4安装java程序

    Linux系统运维笔记(五),CentOS 6.4安装java程序 用eclipse编译通的java程序,现需要实施到服务器.实施步骤: 一,导出程序成jar包. 1,在主类编辑界面点右健,选  ru ...

  6. HITsz 数据库笔记

    这是 HITsz 数据库笔记,欢迎到我的 GitHub 上查看,有笔记说明和源码,作业和实验报告,希望对你有帮助 博客园显示图片异常 数据库基本概念 数据抽象 通过抽象来对用户屏蔽复杂性,以简化用户与 ...

  7. C#可扩展编程之MEF学习笔记(五):MEF高级进阶

    好久没有写博客了,今天抽空继续写MEF系列的文章.有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后. 前面四篇讲了MEF的基础知识,学完了前四篇,MEF中比较常用 ...

  8. SQL Server 2012 数据库笔记

    慕课网 首页 实战 路径 猿问 手记     Python 手记 \ SQL Server 2012 数据库笔记 SQL Server 2012 数据库笔记 2016-10-25 16:29:33 1 ...

  9. 《MFC游戏开发》笔记五 定时器和简单动画

    本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9332377 作者:七十一雾央 新浪微博:http:// ...

随机推荐

  1. Yum项目上线实战 (网站运维)-Linux从入门到精通第十一天(非原创)

    文章大纲 一.编译安装与卸载Nginx二.关于LAMP三.LAMP环境部署四.学习资料下载五.参考文章   一.编译安装与卸载Nginx Nginx:是一款比较流行的web服务器软件,类似于Apach ...

  2. jqmobile FAQ

    1. 用JavaScript弹出对话框 $("#msgBox").popup("open"); <div data-role="popup&qu ...

  3. Robot Framework常用关键字

    虽然通过RIDE提供"填表"一样的写测试用例的方式.但它却支持强大的关键字功能,以及可以开发关键字的扩展能力. Comment 注释功能,也可以使用python中的"#& ...

  4. Django使用Mysql已存在数据表的方法

    在mysql数据库中已经存在有数据的表,自己又不想删除,下面方法可以同步django中创建的表 1.最好将自己建的表名改为前缀和django自动创建表名前缀相同,不改也可以,但是后期表太多容易混乱 2 ...

  5. Linux的IP详解

                        俗话说:黑发不知勤学早,白首方悔读书迟.                                                             ...

  6. Prometheus(三):Prometheus监控交换机(snmp)

    默认已安装Prometheus服务,服务地址:192.168.56.200 一.获取交换机snmp信息 snmp服务IP(交换机IP):172.20.2.83 snmp community:dfete ...

  7. OpenLDAP 安装教程

    OpenLDAP 安装教程 本文原始地址:https://sitoi.cn/posts/48217.html 在centos7上安装OpenLDAP 环境准备 两台虚拟机 node01 IP:192. ...

  8. Lua语法要点2

    [Lua语法要点2] 1.Lua函数 function 可以添加 local 关键字.添加后为局部函数,不添加(默认)为全局函数.return 可以返回多个返回值,以, 分隔. 使用 ... 来表示变 ...

  9. django orm 基于双下划线的跨表查询

    一..基于双下划线的跨表查询(join实现) key:正向查询按字段,反向查询按表明小写 1.一对多跨表查询 查询在跨表中可以有两种方式,正向查询就是关键字段在你要搜索的表,没有关键字段就是反向查询 ...

  10. C++stringstream使用

    链接 建议在使用是直接使用stringstream,不需要再去分输入用istringstream,输出用ostringstream.