MOOC 数据库笔记(五):关系演算
关系演算
概述
(这部分的内容大多与离散数学有关,我没有相关基础,所以现在只是简单看一下)
关系演算是以数理逻辑中的谓词演算为基础的。
关系演算是描述关系运算的另一种思维方式。
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 数据库笔记(五):关系演算的更多相关文章
- MOOC 数据库笔记(三):关系模型之基本概念
关系模型的基本概念 关系模型简述 1.最早由E.F.Codd在1970年提出. 2.是从表(Table)及表的处理方式中抽象出来的,是在对传统表及其操作进行数学化严格定义的基础上,引入集合理论与逻辑学 ...
- MOOC 数据库笔记(四):关系代数
关系代数 关系代数概述 特点 基于集合,提供了一系列的关系代数操作:并.差.笛卡尔积(广义积).选择.投影和更名等基本操作 以及交.连接和关系除等扩展操作,是一种集合思维的操作语言. 关系代数操作以一 ...
- MySQL数据库笔记五:多表查询
1.表与表之间的关系 一对一:用户表和身份信息表,用户表是主表 例如:男人表 .女人表 create table man( mid int primary key auto_increment, mn ...
- Django开发笔记五
Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.页面继承 定义base.html: <!DOC ...
- Linux系统运维笔记(五),CentOS 6.4安装java程序
Linux系统运维笔记(五),CentOS 6.4安装java程序 用eclipse编译通的java程序,现需要实施到服务器.实施步骤: 一,导出程序成jar包. 1,在主类编辑界面点右健,选 ru ...
- HITsz 数据库笔记
这是 HITsz 数据库笔记,欢迎到我的 GitHub 上查看,有笔记说明和源码,作业和实验报告,希望对你有帮助 博客园显示图片异常 数据库基本概念 数据抽象 通过抽象来对用户屏蔽复杂性,以简化用户与 ...
- C#可扩展编程之MEF学习笔记(五):MEF高级进阶
好久没有写博客了,今天抽空继续写MEF系列的文章.有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后. 前面四篇讲了MEF的基础知识,学完了前四篇,MEF中比较常用 ...
- SQL Server 2012 数据库笔记
慕课网 首页 实战 路径 猿问 手记 Python 手记 \ SQL Server 2012 数据库笔记 SQL Server 2012 数据库笔记 2016-10-25 16:29:33 1 ...
- 《MFC游戏开发》笔记五 定时器和简单动画
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9332377 作者:七十一雾央 新浪微博:http:// ...
随机推荐
- C++ OpenSSL 之一:编译和使用
1.官网 https://www.openssl.org/ 当前使用版本为OpenSSL 1.1.1c 2.编译 ①下载后解压,假设解压位置为/home/openssl-1.1.1c ②./confi ...
- 三、requests模块
Requests: 让 HTTP 服务人类 虽然Python的标准库中 urllib2 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests 自称 “ ...
- Nios II IDE代码优化,quartus ii 11.0版本IDE
开发Altera Nios II软件可使用Nios II IDE或 Nios II Software BuildTools for Eclipse(即:Nios II SBT for Eclipse) ...
- 工作不久的安卓开发者,他们是这样规划自己的Android学习路线
Android开发工作者工作不久的时候,会有一段迷茫期,觉得自己应该再学一点,却不知道从何学起,该怎样规划自己的学习路线呢?今天,我给大家梳理一下Android基础,就像建造房屋一样,要建造一座宏伟的 ...
- yoast breadcrumb面包屑导航修改去掉product
前面我们创建了wordpress添加post_type自定义文章类型和调用自定义post_type文章,现在yoast 面包屑导航出现home >product >分类1,想要把produ ...
- MySQL 官方测试库
MySQL 官方测试库 github 地址 https://github.com/datacharmer/test_db MySQL 文档地址 https://dev.mysql.com/doc/em ...
- Python并发编程之进程通信
''' 进程间的通信 ''' """ multiprocessing模块支持进程间通信的两种主要形式:管道和队列 都是基于消息传递实现的, ""&qu ...
- [BZOJ2667][cqoi2012][kcoj]模拟工厂
题目描述 Description 有一个称为“模拟工厂”的游戏是这样的:在时刻0,工厂的生产力等于1.在每个时刻,你可以提高生产力或者生产商品.如果选择提高生产力,在下一个时刻时工厂的生产力加1:如果 ...
- centos7 安装 mysql5.7.25
一.检查是否安装了mysql和mariadb,若已经安装就需要卸载. [root@localhost ~]# rpm -qa|grep mariadb // 查询出来已安装的mariadb [root ...
- cocos:C++ 导出到lua, genbindings.py修改
cocos:C++ 导出到lua, genbindings.py修改 1. 准备 把tools目录下的cocos2dx_extension.ini, genbindings.py, userconf. ...