数据库系统原理与应用教程(第三版)ch08-Datalog语言课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数据库系统原理与应用教程(第三版)ch08-Datalog语言课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 系统 原理 应用 教程 第三 ch08 Datalog 语言 课件
- 资源描述:
-
1、数据库系统原理与应用教程(第三版)第8章 Datalog语言第1页第第8章章 Datalog语言语言 本章概述 本章的学习目标主要内容数据库系统原理与应用教程(第三版)第8章 Datalog语言第2页本章概述本章概述l关系代数是关系型数据库的理论基础,是数据库产品应用关系代数是关系型数据库的理论基础,是数据库产品应用和发展的坚实基础。随着数据技术的不断提高,关系代数和发展的坚实基础。随着数据技术的不断提高,关系代数也暴露出了一些局限性,例如,无法有效地表示递归运算、也暴露出了一些局限性,例如,无法有效地表示递归运算、逻辑表达能力弱等。逻辑表达能力弱等。l在这种情况下,在这种情况下,Datalo
2、g语言应运而生。语言应运而生。Datalog语言是语言是一种基于逻辑编程语言一种基于逻辑编程语言Prolog的一种非过程化的语言。同的一种非过程化的语言。同使用关系演算类似,用户只需要给出所描述的信息,不需使用关系演算类似,用户只需要给出所描述的信息,不需要给出获取信息的具体过程。要给出获取信息的具体过程。Datalog语言使用声明的方语言使用声明的方式定义,简化了简单查询的书写,使查询优化更容易进行。式定义,简化了简单查询的书写,使查询优化更容易进行。l本章将要全面介绍本章将要全面介绍Datalog语言的基本结构、规则、递归语言的基本结构、规则、递归编程以及从关系代数到编程以及从关系代数到D
3、atalog语言的转换等内容。语言的转换等内容。数据库系统原理与应用教程(第三版)第8章 Datalog语言第3页本章的学习目标本章的学习目标l了解了解Datalog语言的基本概念;语言的基本概念;l掌握掌握Datalog语言的基本结构;语言的基本结构;l掌握掌握Datalog语言的基本规则;语言的基本规则;l掌握从关系代数到掌握从关系代数到Datalog语言的转换过程;语言的转换过程;l认识和掌握认识和掌握Datalog语言的递归编程原理;语言的递归编程原理;l理解包的概念和其在关系代数和理解包的概念和其在关系代数和Datalog语语言中的作用。言中的作用。数据库系统原理与应用教程(第三版)
4、第8章 Datalog语言第4页主要内容主要内容8.1 基本概念基本概念 8.2 关系代数向关系代数向Datalog规则的转换规则的转换 8.3 递归原理递归原理 8.4 包的运算包的运算 8.5 本章小结本章小结 数据库系统原理与应用教程(第三版)第8章 Datalog语言第5页8.1 基本概念基本概念l逻辑也是一种表示关系查询的方法,例如逻辑也是一种表示关系查询的方法,例如Datalog语言就可以表示相同类型的查询。语言就可以表示相同类型的查询。lDatalog语言不是使用过程语言来表示查询,语言不是使用过程语言来表示查询,而是使用一种规则来表示出这种想法,即而是使用一种规则来表示出这种想
5、法,即可以通过已知的关系中的某些元组的组合可以通过已知的关系中的某些元组的组合推测某个其他元组是否在某个其他关系中。推测某个其他元组是否在某个其他关系中。数据库系统原理与应用教程(第三版)第8章 Datalog语言第6页基本结构基本结构 lDatalog语言包括了两种基本的原子,即关系原语言包括了两种基本的原子,即关系原子和算术原子。子和算术原子。Datalog语言是由这些原子按照语言是由这些原子按照一定的规则组成的。一定的规则组成的。l在在Datalog语言中,关系通过称为谓词的符号来语言中,关系通过称为谓词的符号来表示,每一个谓词都有固定数量的参数。关系原表示,每一个谓词都有固定数量的参数
6、。关系原子是由符号谓词和其后的参数组成,关系原子也子是由符号谓词和其后的参数组成,关系原子也经常简称原子。例如,如果谓词是经常简称原子。例如,如果谓词是R,其参数分,其参数分别是别是t1,t2,tn,那么,那么R(t1,t2,tn)就就是一个关系原子。是一个关系原子。l算术原子是两个算术表达式的比较。算术原子的算术原子是两个算术表达式的比较。算术原子的值也是布尔值。值也是布尔值。数据库系统原理与应用教程(第三版)第8章 Datalog语言第7页一般规则一般规则 l在前面讲述的关系代数中,介绍了许多关系代数在前面讲述的关系代数中,介绍了许多关系代数运算,例如集合、笛卡尔乘积和自然连接等。这运算,
7、例如集合、笛卡尔乘积和自然连接等。这些运算形式在些运算形式在Datalog语言中可以使用规则来描语言中可以使用规则来描述。规则就是述。规则就是Datalog语言中描述各种原子元素语言中描述各种原子元素关联的规范,包括下列三个组成部分:关联的规范,包括下列三个组成部分:1.一个称为头部的关系原子,其后是一个称为头部的关系原子,其后是2.左向箭头符号左向箭头符号,读作,读作if,其后是,其后是3.多个子目标组成的规则体。这些子目标既可以是关多个子目标组成的规则体。这些子目标既可以是关系原子,也可以是算术原子。各个子目标之间用逻辑系原子,也可以是算术原子。各个子目标之间用逻辑运算符运算符AND连接,
8、且各个子目标前面可以有选择地增连接,且各个子目标前面可以有选择地增加取反逻辑运算符加取反逻辑运算符NOT。数据库系统原理与应用教程(第三版)第8章 Datalog语言第8页安全规则安全规则 l前面讲过,前面讲过,Datalog语言是一种由许多原子构成语言是一种由许多原子构成的规则,规则包含了许多变量。规则的目标是使的规则,规则包含了许多变量。规则的目标是使规则的头部关系原子为真。由于关系实例总是有规则的头部关系原子为真。由于关系实例总是有限,所以还需要由规则保证得到的头部关系也都限,所以还需要由规则保证得到的头部关系也都是有限的。如果得到的头部关系是无限的,那么是有限的。如果得到的头部关系是无
9、限的,那么这种规则是无意义的。这种规则是无意义的。l下面分析如何保证得到的查询结果是有意义的。下面分析如何保证得到的查询结果是有意义的。在子目标中,包括了关系子目标、求反关系子目在子目标中,包括了关系子目标、求反关系子目标、算术子目标和求反算术子目标。标、算术子目标和求反算术子目标。数据库系统原理与应用教程(第三版)第8章 Datalog语言第9页外延谓词和内涵谓词外延谓词和内涵谓词 l外延谓词和内涵谓词是两个经常提到的概念。当谓词所指外延谓词和内涵谓词是两个经常提到的概念。当谓词所指的关系存储在数据库中时,称该谓词为外延谓词。当谓词的关系存储在数据库中时,称该谓词为外延谓词。当谓词所指的关系
10、是通过一个或多个所指的关系是通过一个或多个Datalog规则计算得到的,规则计算得到的,称该谓词是内涵谓词。外延谓词和内涵谓词之间的差别类称该谓词是内涵谓词。外延谓词和内涵谓词之间的差别类似关系代数表达式的运算项和使用关系代数表达式计算的似关系代数表达式的运算项和使用关系代数表达式计算的关系之间的差别。关系之间的差别。l在在Datalog规则中,如果谓词分别是内涵的或外延的,可规则中,如果谓词分别是内涵的或外延的,可以引用与内涵的或外延的谓词相对应的关系。有时,使用以引用与内涵的或外延的谓词相对应的关系。有时,使用IDB(Internal Database,内涵数据库,内涵数据库)来引用内涵谓
11、词或来引用内涵谓词或相应的关系,使用相应的关系,使用EDB(External Database,外延数据库,外延数据库)来引用外延谓词或相应的关系。来引用外延谓词或相应的关系。数据库系统原理与应用教程(第三版)第8章 Datalog语言第10页主要内容主要内容8.1 基本概念基本概念 8.2 关系代数向关系代数向Datalog规则的转换规则的转换 8.3 递归原理递归原理 8.4 包的运算包的运算 8.5 本章小结本章小结 数据库系统原理与应用教程(第三版)第8章 Datalog语言第11页8.2 关系代数向关系代数向Datalog规则的转换规则的转换l上一章介绍了关系代数的各种运算形式,上一
12、章介绍了关系代数的各种运算形式,本节将介绍各种本节将介绍各种Datalog规则形式。一般地,规则形式。一般地,可以使用一个或多个可以使用一个或多个Datalog规则来模拟关规则来模拟关系代数的运算形式,并且可以模拟非常复系代数的运算形式,并且可以模拟非常复杂的运算形式。杂的运算形式。l本节主要研究如何从关系代数的基本运算本节主要研究如何从关系代数的基本运算形式以及连接运算形式转换到形式以及连接运算形式转换到Datalog规则。规则。数据库系统原理与应用教程(第三版)第8章 Datalog语言第12页从集合运算到从集合运算到Datalog规则规则 l集合运算是关系代数的最基本的运算形式,包括了交
13、集、并集和差集集合运算是关系代数的最基本的运算形式,包括了交集、并集和差集三种运算形式。下面介绍如何使用三种运算形式。下面介绍如何使用Datalog规则模拟这三种集合运算规则模拟这三种集合运算形式。形式。l交集运算可以使用一个交集运算可以使用一个Datalog规则来表示。由于交集运算涉及了两规则来表示。由于交集运算涉及了两个关系,那么在个关系,那么在Datalog规则中,具有与两个关系对应的子目标。在规则中,具有与两个关系对应的子目标。在规则中,相应的参数使用相同的变量。规则中,相应的参数使用相同的变量。l并集运算可以使用两个规则来表示。在并集运算可以使用两个规则来表示。在Datalog规则中
14、,每个规则都规则中,每个规则都对应着一个并集运算中的关系,且两个规则的头部都有相同的对应着一个并集运算中的关系,且两个规则的头部都有相同的IDB谓谓词。头部的参数与各个子目标中的参数完全相同。词。头部的参数与各个子目标中的参数完全相同。l差集运算可以使用具有求反子目标的一个规则来计算。即如果计算两差集运算可以使用具有求反子目标的一个规则来计算。即如果计算两个关系个关系U和和V的差集,可以这样来计算,非求反子目标是谓词的差集,可以这样来计算,非求反子目标是谓词U,求反,求反子目标是谓词子目标是谓词V。在该规则中,子目标和头部对于相应的参数都有相。在该规则中,子目标和头部对于相应的参数都有相同的变
15、量。同的变量。数据库系统原理与应用教程(第三版)第8章 Datalog语言第13页从投影运算到从投影运算到Datalog规则规则 l把关系代数中的投影运算形式转换成把关系代数中的投影运算形式转换成Datalog规则,可以使用一个具有单一子目规则,可以使用一个具有单一子目标的规则。该子目标的参数是数量不同于标的规则。该子目标的参数是数量不同于关系的属性数量的变量,每个变量都对应关系的属性数量的变量,每个变量都对应着关系的一个属性。头部是带有参数的原着关系的一个属性。头部是带有参数的原子,这些参数是按照要求的顺序与投影的子,这些参数是按照要求的顺序与投影的属性表对应的变量。头部原子的这些变量属性表
16、对应的变量。头部原子的这些变量只是子目标投影过来的变量,因此两者的只是子目标投影过来的变量,因此两者的数量不同。数量不同。数据库系统原理与应用教程(第三版)第8章 Datalog语言第14页从笛卡尔乘积到从笛卡尔乘积到Datalog规则规则 l两个关系两个关系U和和V的笛卡尔乘积的笛卡尔乘积UV可以使用单一可以使用单一的的Datalog规则来表示。在这个规则来表示。在这个Datalog规则中,规则中,有两个子目标。一个子目标对应关系有两个子目标。一个子目标对应关系U,另一个,另一个子目标对应关系子目标对应关系V。每个子目标都有不同的变量,。每个子目标都有不同的变量,每个变量对应着关系每个变量对
17、应着关系U或或V中的一个属性。头部的中的一个属性。头部的关系原子把出现的两个子目标中的所有变量作为关系原子把出现的两个子目标中的所有变量作为参数,且严格按照出现的先后顺序,即出现在关参数,且严格按照出现的先后顺序,即出现在关系系U子目标中的变量排列在关系子目标中的变量排列在关系V子目标的变量之子目标的变量之前。前。数据库系统原理与应用教程(第三版)第8章 Datalog语言第15页从选择运算到从选择运算到Datalog规则规则 l把关系运算中的选择转换成把关系运算中的选择转换成Datalog规则比较复杂。下面规则比较复杂。下面首先研究一种简单的情况,然后再研究如何把具有复杂条首先研究一种简单的
展开阅读全文