数据库原理 关系模型之关系演算

关系演算属于了解内容 不需要重点掌握

基本内容

1. 关系演算之关系元组演算

2. 关系演算之关系域演算

3. 关系演算之安全性

4. 关于三种关系运算的一些观点

主要是元组演算和域演算

关系元组演算公式的定义方法是:递归     评价:递归是一种定义语言的好方法

存在量词和全称量词是我们学习元组演算的关键之所在

公式记起来很简单,但是如何运用公式来表达查询的思维训练是不可缺少的

我们知道:关系代数是基于集合、元组演算和域演算是基于逻辑,他们共同构成了数据库查询语言SQL的基础

元组演算是以元组为操作对象、单位                       上面的r就代表元组

关系演算是以谓词变量为基础的                          也就是上面的操作对象                     也就是上面的r

按照操作对象不同我们可以把关系演算分为两种类型  元组演算和域演算(谓词变量分辨是元组和域

SQL语言是继承了关系代数和关系演算的优点形成的

如何递归的定义呢?

首先我们要知道 P(t)的原子公式有三个

第一个表示元组s属于关系R当中

第二个表示元组s在A属性下的分量和一个常量的比较运算

第三个表示元组s在属性A下的分量和元组u在B属性下的分量的比较运算

还有几个要了解的

第一个存在元组t属于R使得P(t)成立,第二个对于R中的任意一个元组t都使得P(t)成立。

 需要的时候可以加括号        上述运算符的优先次序分别是:

原子公式及与、或、非之理解与运用(优先级很重要)

存在量词和全称量词的运用

存在量词

对应关系代数的写法

等价变换:

元组演算的等价性变换

四个最复杂的例子

全都学过

全没学过

至少有一学过

至少有一没学过

用元组演算实现关系代数

元组演算公式总结

关系域演算

域演算是以域变量为变量的。

域变量组成一个元组,看看是否满足公式p

关系域演算的构造示例

关系域演算和关系元组演算的区别

元组演算是以元组为单位,然后找到元组的分量进行谓词判断

域演算是以域为单位,然后判断与组成的元组是否存在或者满足谓词判断,是非过程化的

元组演算和域演算是可以等价转化的

 

什么是示例查询?

基于域演算的QBE语言

query by example:按照示例查询

是很多数据库管理系统为一般用户提供表达查询的语言

1975年就提出了,1978年就被IBM公司实现了

特点

基于屏幕表格的查询语言,不需要书写复杂的查询公式

只要将条件写在表格里面即可

评价:

是一种高度为过程化的查询语言,特别适合 终端用户的使用(这一点和关系代数不同,关系代数体现了明显的先后顺序)。

 

表格有几个区域如下:

关系名区域:书写 想要查询的关系的名称

属性名区域:显示 对应关系名区域书写关系的 所有属性

操作命令区域:书写 查询操作的命令

查询条件区域:书写查询操作的条件

 

QBE的操作命令

例如:向student表中插入两个元组

我们在关系名区域写上Student之后属性名区域会显示改关系的属性

然后在操作命令区域写上QBE的操作命令

最后在该命令后填写元组的各个分量值

再例如:将student表中的这两个元组删除掉

很简单

那么 我们如何在示例查询中 表示简单的条件?

稍微复杂一点的:

不同属性的条件可以写在同一行(表示这两个不同的条件之间是一种与操作

例如:找到所有年龄小于17岁的女同学

注意:如果是等于的话,那么这个=号是可以省略的

写成域演算公式:

那复杂一点的怎么书写呢?

QBE引入了一个示例元素的概念

例如:找到小于17岁的所有女同学的姓名

示例元素不是某一个具体的值而是起到一个占位的作用

解析:加上下划线就变成是实例元素了,就不再是条件,可以是域里面的任意值,效果是一样的。

我们可以使用示例元素起到一个连接的作用多个条件之间的组合的作用

用示例元素实现‘与’运算和‘或’运算

两个不同的示例元素 表示或运算

例如:找出所有年龄小于17岁 或者 大于20岁的学生姓名

两个相同的示例元素 表示与运算

例如:找出所有年龄 大于17岁并且小于等于20岁的同学姓名

也可以将 与或非 条件写在 操作命令区

例如:(年龄<17并且是男的)或者(年龄大于20并且是女的)

如何用示例元素实现多个表之间的连接

当检索多个表的时候可以 利用同一的连接条件 使用相同的示例元素 来实现多个表之间的连接

例如:李明老师教过的所有学生

不同的表 使用相同的示例元素的时候 表示 这两个表的S#相等 起到自然连接的 作用

QBE应用训练

例如:查询计算机系年龄大于19岁的男同学的姓名

例如:查询计算机系 或者 年龄大于19岁 或者 是男同学的姓名

例如:查询既选修了001号课程 又选修了002号课程的学生 的学号

再例如:找出比男同学张三 年龄大所有男同学的姓名

例如:将张三同学的年龄更新为19岁

再例如:将位同学的年龄增加1岁

例如:找出成绩不及格同学的姓名 及 不及格的课程和分数

用QBE也可以实现关系代数的操作 

关系演算的安全性

关系运算安全性不产生 无线关系 和 无穷验证 的运算 是安全的

集合本身是有限的,有限元素集合的有限次运算还是有限的

我们知道关系代数是基于集合的运算,所以关系代数是安全的,但是关系演算可能不是安全的

如何保证关系演算的安全性?

需要我们加上一些约束条件:即任何公式都在一个集合范围内 操作,而不是无限范围内操作,才能保证其安全性

安全约束有限集合DOM

安全元组运算表达式

满足三个条件

同样也有安全域演算表达式

关于关系运算的一些观点

基于元组演算的语言

回顾

 

 

 

 

 

 

 

 

 

 

相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页