当前位置:首页 > 开发 > 数据库 > 正文

第四章 关系运算

发表于: 2010-12-27   作者:bsr1983   来源:转载   浏览次数:
摘要: 关系模型有三个重要组成部分:数据结构,数据操纵,数据完整性规则。 关系查询语言根据其理论基础的不同分成两类: (1)关系代数语言:查询操作时以集合操作为基础的运算。 (2)关系演算语言:查询操作是以谓词演算为基础的运算。 4.1 关系代数 4.1.1 关系代数的五个基本操作 1.并(Union) 2.差(Difference) 3.笛卡尔积(Cartesian&

关系模型有三个重要组成部分:数据结构,数据操纵,数据完整性规则。

关系查询语言根据其理论基础的不同分成两类:

(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-->

第四章 关系运算

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
是不是对指针的任何运算都是合法的呢?答案是它可以执行某些运算,但并非所有的运算都合法。除了加
  时间回到两个月前,简单地理了理原型链、prototype以及__proto__之间的乱七八糟的关系,同时也
在SQLServer 2000环境中,如果要实现交叉表格报表,主要是靠一系列复杂的 SELECT...CASE 语句. 其实现
如果if的condition不用布尔表达式来做条件判断而采用关系表达式,实际上关系表达式运算的结果要么是
数据库考试中经常会出现关系运算题目 而一般的加减乘运算相对比较简单,通常不会直接出题 比较容易
C里面的运算符优先级关系表 顺序从上到下。(同一优先级的运算符,运算次序由结合方向所决定。) 一
//【任务3】实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、求反、
1. 乘性运算包括乘法运算、除法运算和取模运算三种运算,这些运算方式与 Java 等语言中的运算方式相
基于内存的有效运用,程序语言中规定了各种不同的数据类型,因此变量所可以表达的最大整数受到限制,
题目: int func(unsigned int i) { Unsigned int temp=i Temp=(temp & 0x55555555)+((temp & 0xaaa
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号