如何证明某些东西增加了关系表达能力?

时间:2014-11-18 16:23:56

标签: sql relational-database proof relational-algebra tuple-relational-calculus

我如何证明某些事物会增加关系表达能力?例如,我遇到了一个问题,我需要说明在SQL的select-project-join查询中添加某些特定功能是否会增加表达能力。我举一个例子并表明它不可表达吗?

1 个答案:

答案 0 :(得分:2)

首先,您必须决定两种符号表达的内容。 (即它们表达的是什么,即表达,即表示。)否则,问题没有多大意义。

例如:只要两个符号的表达式数量无穷大,就可以按1:1的对应关系设置。因此,任何一个集合的表达式都可以表达来自另一个集合的相应表达式,可以指定表达。所以他们在这种微不足道的意义上同样富有表现力。 (基本上,哪种意义上表达了彼此的表达方式。)

在被告知我们的两个符号表达的内容时,我们通常会给出每个符号:

  • 一些原始表达
  • 生成表达式的一些规则
  • 一些原始的东西
  • 生成事物的一些规则
  • 从表达式到事物的映射

有时映射是从终端表达式到原始事物,从非终端表达式到结构化事物,但它不一定是那样。

要表明一个符号更具表现力(无论他们表达的是什么)是为了表明一个符号可以表达对方可以加上一些它不能表达的所有东西。

“事物”实际上可以是其中一个符号的表达式,从每个表达式到自身的简单映射,另一个(表达式较少)表示法只映射到它的适当子集(表达力更强)。 (这里的表达能够与上面的例子不同的原因是,这里两个符号的每个表达被定义为表达与该例子中不同的东西。)

参见讨论in the Alice bookMaier's book。这些处理数据库查询语言。例如,关系代数,关系元组微积分和关系域微积分的表达等价版本,以及谓词逻辑和Datalog版本等其他语言。