关系代数是基于集合的一种查询,元组演算和域演算是基于逻辑的一种查询。
一、什么是关系元组演算
元组演算是以元组为对象、为操作单位进行演算。谓词变量就是操作对象。
不是以上形式的就不是公式。
二、简单运用元组演算公式
注意运算符优先级不同如果不在相应的位置添加括号的话会带来结果的差异。
三、存在量词与全称量词
全称量词与存在量词主要是用来进行验证,验证t是否满足相应的条件。对于后面的所有F(t)要验证前面的t,一个存在一个t满足F(t)这个条件,一个是对所有的t都满足这个条件。
写在前面的那个括号里面的是约束变量,没有写在前面括号里面的是自由变量。
这里需要是存在量词,存在量词是遍历每一个的时候有一个满足条件就加入,如果是全称量词的话需要所有的关系中的元组都满足条件才可以,显然不正确。
最先选出的元组不一样。
实际上全称量词和存在量词不仅仅是根据是否有“所有”字样来进行判断的,而是要根据具体的情况的语义进行分析,就像是需要所有科目都及格,主要看检索条件,不是看是不是所有同学,如果检索条件中暗含比如及格就要求所有科目都及格。
四、等价变换
等价性可以变换使用,使用一种思维不方便查询的时候,可以考虑使用另一种方式来查询。
逻辑代数的摩根公式
这种写法是不正确的 ,一个时候的u[C#]只有一个值。
两个元组表示这样的话不存在一对二的情况,相当于alias操作。
必须对这个学生的所有课程都进行验证没有001,不能只对1条进行验证(下一条可能是001呀)
五、四个典型实例
六、用元组演算实现关系代数
元组演算的思维是以元组为单位去进行循环演算,得到最终的结果的操作,这种循环操作的思维值得借鉴。
元组演算和关系代数是可以相互转换的 ,但是有一定的前提。
七、什么是域演算
一个是从行即元组来判断,一个是从列的属性的角度来进行判断,以某一列的取值范围进行判断。
元组演算是以元组为变量,以元组为基本处理单位,先找到元组,然后再找到元组分量,进行谓词判断;域演算是以域变量为基本处理单位,先有域变量,然后再判断由这些域变量组成的元组是否存在或是否满足谓词判断。
公式中的运算符相同,不同的只是变量。
元组演算和域演算可以等价互换,但是域演算的过程性非常差,更适合用户表达。
八、什么是按示例查询-QBE
操作命令即显示、插入、删除等命令。中间大部分空白填写查询条件。
不同条件写在同一行中表示的是与操作。
引入了示例元素的概念。注意填写表格的时候哪些是示例元素哪些是值。
也可以使用示例元素实现多个元素组合的效果和作用。
如果两行中采用了不同的示例元素,两个元素之间是或的条件。
如果想要实现与运算,两个示例元素的代表字母就要使用相同的。
也可以把与或非运算条件填写在操作那里。
涉及到不同的表填写相同的示例元素可以将多个表连接起来。
九、QBE应用训练
如果写在开头的操作部分表示对整个行进行更新,如果写在后面具体的属性位置表示对某一个属性进行更新。
根据条件框进行选择
十、关系演算的安全性
不产生无限关系和无穷验证的运算被称为安全的
关系代数是一种集合运算,是安全的
【集合本身是有限的,有限元素集合的有限次运算仍旧是有限的】
关系演算不一定是安全的
检验所有元素就可能导致无穷验证。
需要对关系演算施加约束条件,即任何公式都在一个集合范围内操作,而不是无限范围内操作,才能保证其安全性。
十一、三种关系运算之比较
首先建立一种数学语言,然后使用键盘可以表达的数学符号来对这些数学语言进行描述,最后使用计算机能偶识别的语言代替这些数学符号进行运算,这样就可以很好的设计出一种数据库语言。