关系语言说明

除了SQL还有其它形式的关系语言:元组关系演算和域关系演算都是基于数理逻辑的声明式查询语言。

下面介绍两种用户友好的查询语言QBE和DataLog

1.元组关系演算

元组关系演算是非过程化的查询语言,它只描述所需要的信息,而不给出获得该信息的具体过程。

元组关系演算中的查询表达式为:

{t|P(t)}

也就是说,它是所有谓词P为真的元组t的集合。

形式化定义

{t|P(t)}

其中P是一个公式。公式中可以出现多个元组变量。 如果元组变量不被\exists\forall修饰,则称为自由变量。

元组关系演算的公式由原子构成,原子可以为如下形式

s\in r其中s是元组变量,而r是关系

s[x]\Theta u[y]其中s和u是元组变量,x是s所基于的关系模式中的属性,y是u所基于的关系模式中的属性,\Theta是比较运算符。

s[x]\Theta c其中s是元组变量,x是s所基于的关系模式中的属性,\Theta是比较运算符,c是属性x所属域的常量

2.域关系演算

形式化定义:

{<x_{1},x_{2},...,x_{n}>|P(x_{1},x_{2},...,x_{n})}

 其中x代表域变量,P代表由原子构成的公式。域关系演算的原子具有如下形式之一

<x_{1},x_{2},...x_{n}> \in r,其中r是n个属性上的关系,x是域变量或者域常量

x\Theta y,其中x和y是域变量,而\Theta是比较运算符

x\Theta c其中x是域变量,\Theta是比较运算符,c是x作为域变量的那个属性中的常量

3.QBE  Query-by-Example

二维文法,类似表格

查询是基于例子的,用户不是写一个过程获得所需答案,而是举出所需答案的一个例子,然后系统把这个例子一般化并计算查询结果

基于文本的版本和基于图形的版本

查询用框架表表示

微软Access中的QBE

4.DataLog

基于逻辑编程语言Prolog的非过程化查询语言。

由一组规则构成

正的文字量:

p(t_{1},t_{2},...,t_{n})其中p是关系名,有n个属性,t_{1},t_{2},...,t_{n}或者是常数或者是变量

负的文字量:

notp(t_{1},t_{2},...,t_{n})其中p是关系名 ,p有n个属性。

事实形式:

p(v_{1},v_{2},...,v_{n})表示元组(v_{1},v_{2},...,v_{n})在关系p中,关系的一组事实可以写成通常的表达格式形式。数据库模式中所有关系的事实集合和数据库模式的一个实例等价。规则建立在文字量的基础上,形式为:

p(t_{1},t_{2},...,t_{n}):-L_{1},L_{2},...,L_{n}

其中每个L_{i}是一个正的或者负的文字量,文字量p(t_{1},t_{2},...,t_{n})

称做规则的头部,规则中其余的文字量构成规则的主体。

一个Datalog有一组规则构成

DataLog的递归和非递归

传递闭包

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值