第四章 关系运算
关系模型有三个重要组成部分:数据结构,数据操纵,数据完整性规则。
关系查询语言根据其理论基础的不同分成两类:
(1)关系代数语言:查询操作时以集合操作为基础的运算。
(2)关系演算语言:查询操作是以谓词演算为基础的运算。
4.1?关系代数
4.1.1?关系代数的五个基本操作
1.并(Union)
2.差(Difference)
3.笛卡尔积(Cartesian?Product)
4.投影(Projection)
这个操作是对一个关系进行垂直分割,消去某些列,并重新安排列的顺序。
5.选择(Selection)
4.1.2?关系代数的四个组合操作
1.交(Intersection)
2.连接(Join)
3.自然连接(Natural?join)
一般自然连接使用在R和S有公共属性的情况中。如果两个关系没有公共属性,那么其自然连接就转化为笛卡尔积操作。
4.除法(Division)
4.1.3?关系代数运算的应用实例
在关系代数运算中,把由五个基本操作经过有限次复合的式子称为关系代数表达式。
4.1.4?关系代数的两个扩充操作
1.外连接(Outer?Join)
如果R和S做自然连接时,把原该舍弃的元组也保留在新关系中,同时在这些元组新增加的属性上填上空值(Null),这种操作称为“外连接”操作。
如果R和S做自然连接时,只把R中原该舍弃的元组放到新关系中,那么这种操作称为“左外连接”操作。
如果R和S做自然连接时,只把S中原该舍弃的元组放到新关系中,那么这种操作称为“右外连接”操作。
2.外部并(Outer?Union)
如果R和S的关系模式不同,构成新关系的属性有R和S的所有属性组成(公共属性只取一次),新关系的元组由属于R或属于S的元组构成,同时元组在新增加的属性上填上空值,那么这种操作称为“外部并”操作。
4.2?关系演算
4.2.1?元组关系演算
在元组关系演算(Tuple?Relational?Calculus)中,元组关系演算表达式简称为元组表达式,期一般形式为
{t|P(t)}
其中,t是元组变量,表示一个元数固定的元组;P是公式,在数理逻辑中也称为谓词,也就是计算机语言中的条件表达式。{t|P(t)}表示满足公式P的所有元组t的集合。
1.原子公式和公式的定义
2.关系代数表达式到元组表达式的转换
4.2.2?域关系演算
1.域关系演算表达式
域关系演算(Domain?Relational?Calculus)类似于元组关系演算,不同之处是用域变量代替元组变量的每一个分量,域变量的变化范围是某个值域而不是一个关系。
2.元组表达式到域表达式的转换
4.2.3?关系运算的安全约束和等价性
1.关系运算的安全性
定义4.3?在数据库技术中,不产生无线关系和无穷验证的运算称为安全运算,相应的表达式称为安全表达式,所采取的措施称为安全约束。
2.关系运算的等价性
4.3?关系代数表达式的优化
4.3.1?关系代数表达式的优化问题
两个关系代数表达式等价是指用同样的关系实例代替两个表达式中相应关系时所得到的结果是一样的。
4.3.2?关系代数表达式的启发式优化运算
在关系代数表达式中,最花费时间和空间的运算是笛卡尔积和连接操作,谓词,引出三条启发式规则,用于对表达式进行转换,以减少中间关系的大小。
(1)尽可能早地执行选择操作
(2)尽可能早地执行投影操作
(3)避免直接做笛卡尔积,把笛卡尔积操作之前和之后的一连串选择和投影合并起来一起做。
通常选择操作优先于投影操作比较好,因为选择操作可能会大大减少关系,并且选择操作可以利用索引存取元组。
<!--EndFragment-->