网站大量收购独家精品文档,联系QQ:2885784924

数据库系统原理及应用-Datalog语言.ppt

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库系统原理及应用-Datalog语言

第8章 Datalog语言 本章概述 关系代数是关系型数据库的理论基础,是数据库产品应用和发展的坚实基础。随着数据技术的不断提高,关系代数也暴露出了一些局限性,例如,无法有效地表示递归运算、逻辑表达能力弱等。在这种情况下,Datalog语言应运而生。 Datalog语言是一种基于逻辑编程语言Prolog的一种非过程化的语言。就像使用关系演算一样,用户只需要给出所描述的信息,不需要给出获取信息的具体过程。Datalog语言使用声明的方式定义,简化了简单查询的书写,使查询优化更容易进行。 本章将要全面介绍Datalog语言的基本结构、规则、递归编程以及从关系代数到Datalog语言的转换等内容。 本章的学习目标 了解Datalog语言的基本概念; 掌握Datalog语言的基本结构; 掌握Datalog语言的基本规则; 掌握从关系代数到Datalog语言的转换过程; 认识和掌握Datalog语言的递归编程原理; 理解包的概念和其在关系代数和Datalog语言中的作用。 主要内容 8.1 基本概念 8.2 关系代数向Datalog规则的转换 8.3 递归原理 8.4 包的运算 8.5 本章小结 8.1 基本概念 逻辑也是一种表示关系查询的方法,例如Datalog语言就可以表示相同类型的查询。Datalog语言不是使用过程语言来表示查询,而是使用一种规则来表示出这种想法,即可以通过已知的关系中的某些元组的组合推测某个其他元组是否在某个其他关系中。 基本结构 Datalog语言包括了两种基本的原子,即关系原子和算术原子。Datalog语言是由这些原子按照一定的规则组成的。 在Datalog语言中,关系通过称为谓词的符号来表示,每一个谓词都有固定数量的参数。关系原子是由符号谓词和其后的参数组成,关系原子也经常简称原子。 算术原子是两个算术表达式的比较。算术原子的值也是布尔值。 一般规则 在前面讲述的关系代数中,介绍了许多关系代数运算,例如集合、笛卡尔乘积、自然连接等。这些运算形式在Datalog语言中可以使用规则来描述。规则就是Datalog语言中描述各种原子元素关联的规范,包括下列三个组成部分: 1. 一个称为头部的关系原子,其后是 2. 左向箭头符号←,读作if,其后是 3. 多个子目标组成的规则体。这些子目标既可以是关系原子,也可以是算术原子。各个子目标之间用逻辑运算符AND连接,且各个子目标前面可以有选择地增加取反逻辑运算符NOT。 安全规则 前面讲过,Datalog语言是一种由许多原子构成的规则,规则包含了许多变量。规则的目标是使规则的头部关系原子为真。由于关系实例总是有限,所以还需要由规则保证得到的头部关系也都是有限的。如果得到的头部关系是无限的,那么这种规则是无意义的。 我们来分析一下,如何保证得到的查询结果是有意义的。在子目标中,包括了关系子目标、求反关系子目标、算术子目标和求反算术子目标。 外延谓词和内涵谓词 外延谓词和内涵谓词是两个经常提到的概念。当谓词所指的关系存储在数据库中时,称该谓词为外延谓词。当谓词所指的关系是通过一个或多个Datalog规则计算得到的,那么称该谓词是内涵谓词。外延谓词和内涵谓词之间的差别类似关系代数表达式的运算项和使用关系代数表达式计算的关系之间的差别。 在Datalog规则中,如果谓词分别是内涵的或外延的,那么可以引用与内涵的或外延的谓词相对应的关系。有时,我们使用IDB(Internal Database,内涵数据库)来引用内涵谓词或相应的关系,使用EDB(External Database,外延数据库)来引用外延谓词或相应的关系。 8.2 关系代数向Datalog规则的转换 上一章介绍了关系代数的各种运算形式,本节将介绍各种Datalog规则形式。一般地,可以使用一个或多个Datalog规则来模拟关系代数的运算形式,并且可以模拟非常复杂的运算形式。 这里,主要研究如何从关系代数的基本运算形式以及连接运算形式转换到Datalog规则。 从集合运算到Datalog规则 集合运算是关系代数的最基本的运算形式,包括了交集、并集和差集三种运算形式。下面介绍如何使用Datalog规则模拟这三种集合运算形式。 交集运算可以使用一个Datalog规则来表示。由于交集运算涉及了两个关系,那么在Datalog规则中,具有与两个关系对应的子目标。在规则中,相应的参数使用相同的变量。 并集运算可以使用两个规则来表示。在Datalog规则中,每一个规则都对应着一个并集运算中的关系,且两个规则的头部都有相同的IDB谓词。头部的参数与各个子目标中的参数完全相同。 差集运算可以使用具有求反子目标的一个规则来计算。也就是说,如果计算两个关系U和V的差集,那么可以这样来计算,非求反子

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档