美文网首页
代数与逻辑查询语言

代数与逻辑查询语言

作者: 我好菜啊_ | 来源:发表于2018-07-07 22:27 被阅读0次

商业DBMS实现的关系一般是基于包的
包(多集,multiset)不用去重
例:R,S是包,t在R中出现了n次,在S中出现了m次,则t在R-S中出现max{0,n-m}次


关系代数上增加的操作符
1.δ消重复
δ(R)

2.聚集操作符:对分好组的各列进行计算
SUM,AVG,MIN,MAX,COUNT
不操作空值

3.分组操作:根据属性进行分组 2+3->γ
γ{下标:starName,min(year)->minYear,count(title)->ctTitle}(StarsIn)
startName是分组属性
year,title是聚集属性

4.扩展投影:将变量关系的列作为参数进行计算,并产生新的列
π{下标L}(R)
L列表可以是以下1)R的属性2)x->y将x重命名为y显示在结果中3)E->z E是一个表达式
投影操作的结果是通过依次考虑R的每一个元组得到的

5.排序算子:把一个关系变成一个元组的列表,注意有些关系代数操作不能作用在列表上
默认升序
一般排序操作放最后
τ{下标表示 按照什么来排序:A1,A2……}(R)
如果其它操作符作用在排序的结果上,则排序的顺序是没有意义的,列表应被看作包,但投影和选择可以保持顺序

6.外连接算符:悬浮元组用null补齐,出现在结果中
悬浮元组:连接属性不能跟另外关系的任何一个元组的连接属性匹配
符号是连接符上价格圈,null的符号是⊥
左外连接(加个下标L):只有左变量的悬浮元组被加进来
右外连接(加个下标R):只有右变量的悬浮元组被加进来
加个下标C表示条件就是θ的外连接版本


关系逻辑

基于代数的抽象查询语言
逻辑查询语言Datalog由if-then规则组成

谓词:关系在Datalog中由谓词表示,每个谓词拥有固定数目的参数(算术比较符号也是谓词)

原子:一个谓词和它的参数一起被称为原子(关系原子)
例:P(x1,x2,……,xn)是由谓词P和参数x1到xn组成的原子

!!注意:谓词定义的关系是集合关系

算术原子:对两个算术表达式作比较


Datalog规则
rule:
LongMovie<—Movies(t,y,l,g,s,p) AND l≥100
等价于
LongMovie:=π{下标t,y}(σ{下标l≥100}(Movies))
1.一个称为头部的关系原子
2.符号<—读作if
3.主体部分,由一个或多个称为子目标的原子组成。原子可以是关系原子或算术原子。字母表之间由AND连接。任何字母表之前都可以添加逻辑算子NOT。


Datalog中的查询是一个或多个规则的组合
如果只有一个关系出现在规则头部,那么这个关系的值就是查询结果
若不止一个关系,则这些关系中的一个是查询的结果,其余都是辅助定义查询结果
通常指定Answer为查询结果名。


安全条件
使得一条规则的结果是一个有限的关系
每个在规则中任意位置出现的变量都必须出现在主体的某些非否定的关系子目标中


扩展谓词:这种谓词的关系存放在数据库中 EDB谓词
内涵谓词:这种谓词的关系是由一个或多个Datalog规则计算出来 IDB谓词
(规则头部不能是EDB)


Datalog规则也可应用于包
如果一个关系由若干规则定义,则结果是每个规则生成的元组的包的联合


关系代数与Datalog p136
每个关系代数算子都可以由一条或多条Datalog规则模拟
扩展关系代数操作不行,比如分组聚集
Datalog规则可以表达关系代数中不能表达的递归功能
or一般要改成多条规则
任何单个Datalog规则都可以用关系代数表示。但多个Datalog规则的集合就不一定,因为Datalog可以表达递归。


Datalog模拟多重操作
观察关系代数表达式的表达树,并对树的每个内部节点创建一个IDB谓词

相关文章

  • 代数与逻辑查询语言

    商业DBMS实现的关系一般是基于包的包(多集,multiset)不用去重例:R,S是包,t在R中出现了n次,在S中...

  • 51 SQL 复习 语句关系代数(二)

    SELECT 查询指定多个列 关系代数 操作 关系代数与SQL 练习 WHERE 去重 查询结果排序 BETWEE...

  • DQL(Data Query Language 数据库查询语言)

    DQL(Data Query Language 数据库查询语言) 简单查询 条件查询 逻辑查询 模糊查询 结果集排...

  • 逻辑运算与集合的关系

    含有有限个元素的布尔代数总是与集合代数同构。具体来说,基于的布尔代数与的集合代数同构。许多逻辑运算中的概念可以在集...

  • 1.3 数理逻辑回顾

    数理逻辑,又称符号逻辑、现代形式逻辑。逻辑学先于一切科学 莱布尼茨:代数演绎的思想。 布尔代数:完整的逻辑代数体系...

  • 4.4 Logic Programming-笔记

    逻辑编程 查询系统通过在数据库中存储断言,并通过查询语句推演查询结果。而操作查询系统的编程语言就是逻辑编程,它能够...

  • 逻辑运算

    逻辑代数概述:用代数的方式对逻辑变量进行扫描和分析的数学工具,也成为布尔代数。逻辑变量的取值只有“真”和“假”,通...

  • 数据库查询语句

    条件与逻辑查询 模糊查询 范围查询 排序 聚合函数 分组 连接查询 分页 子查询

  • 关系代数

    1.概念: ​ 关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。 ​ 按运算符的不同分为传统的集...

  • JavaScript-逻辑元算基础

    逻辑运算又称布尔代数,就是布尔值的"算数"运算。逻辑运算符包括:1,逻辑与(&&) 2,逻辑或( || ) 3,逻...

网友评论

      本文标题:代数与逻辑查询语言

      本文链接:https://www.haomeiwen.com/subject/mxvguftx.html