数据库系统原理-第五章代数和逻辑查询语言解读.ppt

数据库系统原理-第五章代数和逻辑查询语言解读.ppt

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

P141 习题 5.4.5 a) b) a) Page * P141 习题 5.4.5 a) b) b) Page * * * 基本结构 Datalog语言包括两种基本的原子,即关系原子和算术原子,由原子按照一定的规则组成Datalog查询语句。 在Datalog语言中,关系通过 “谓词”来表示,每一个谓词都有固定数量的参数。 关系原子是由符号谓词和其后的参数组成,常简称原子。 例如,如果谓词是R,其参数分别是t1,t2,…,tn,那么R(t1,t2,…,tn)就是一个关系原子。 算术原子是两个算术表达式的比较,算术原子的值是布尔值。 Page * 例子 Page * 一般规则 规则是Datalog语言中描述原子之间关联的规范,包括下列三个组成部分: 1. 一个称为头部的关系原子,其后是 2. 左向箭头符号←,读作if,其后是 3. 主体部分,由一个或多个称为子目标的原子组成。 子目标既可以是关系原子,也可以是算术原子。各个子目标之间用逻辑运算符AND连接,且各个子目标前面可以有选择地增加取反逻辑运算符NOT。 规则的目标是使规则的头部关系原子为真。 例如:LongMovie(t,y)←Movies(t,y,l,g,s,p) AND l≥100 等价于LongMovie:=πtitle,year(σlength) ≥100(Movies) Page * 例子 Page * 例子 Page * 例子 Page * 例子 Page * Page * 安全规则 安全规则: 由于关系实例总是有限,所以还需要由规则保证得到的头部关系也都是有限的。 每个在规则中任意位置出现的变量都必须出现在主体的某些非否定的关系子目标中。 尤其是,任何在规则头部、否定关系子目标或任意算术子目标中出现的变量,也必须出现在主体的非否定的关系子目标中。 Page * 例5.19 安全规则 LongMovie(t,y)←Movies(t,y,l,g,s,p) AND l≥100 例5.20 非安全规则,不允许出现在Datalog中 P(x,y)←Q(x,z) AND NOT R(w,x,z) AND xy Page * 扩展谓词和内涵谓词 若谓词所指的关系存储在数据库中,称该谓词为扩展谓词。 当谓词所指的关系是通过一个或多个Datalog规则计算得到的,称该谓词是内涵谓词。 扩展谓词和内涵谓词分别对应关系代数表达式中的操作数和使用关系代数表达式计算得到的关系。 在Datalog规则中,可以使用EDB(External Database,扩展数据库)表示扩展谓词或相应的关系,使用IDB(Internal Database,内涵数据库)表示内涵谓词或相应的关系 。 例如,Movies是一个EDB关系,而LongMovie是一个IDB关系。 Page * 练习 P136 习题5.3.1 b, c, d b) Page * ? 练习 P136 习题5.3.1 b, c, d c) Page * ? ? ? 练习 P136 习题5.3.1 b, c, d d) Page * 5.5 关系代数与Datalog 一般地,可以使用一个或多个Datalog规则来模拟关系代数的运算形式,并且可以模拟非常复杂的运算形式。 本节主要研究如何从关系代数的基本运算形式以及连接运算形式转换到Datalog规则。 Page * 从集合运算到Datalog规则 交集运算可以使用一个Datalog规则来表示。由于交集运算涉及了两个关系,那么在Datalog规则中,具有与两个关系对应的子目标。在规则中,相应的参数使用相同的变量。 假设R和S的关系模式是R(A,B,C)和S(A,B,C), 则R∩S可以使用规则: I(a, b, c) ← R(a, b, c) AND S(a, b, c) Page * 并集运算使用两个规则来表示,每个规则对应着一个并集运算中的关系,且两个规则的头部都有相同的IDB谓词。头部的参数与各个子目标中的参数完全相同。 假设R和S的关系模式是R(A,B,C)和S(A,B,C), 则R ∪ S可以使用规则: U(x, y, z) ← R(x, y, z) U(x, y, z) ← S(x, y, z) 或U(a, b, c) ← S(a, b, c) 注意:变量名对于规则是局部的,即每条规则是独立计算的,并且向其头部关系提供元组,与其他规则无关,因此变量名是独立于规则的。 Page * 差集运算可以使用具有求反子目标的

文档评论(0)

22ffbqq + 关注
内容提供者

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

1亿VIP精品文档

相关文档