为什么union,intersection和difference操作在关系代数中称为布尔运算?

时间:2017-04-06 03:05:59

标签: database relational-database boolean-logic relational-algebra

为什么关系代数的并集,交集和差分运算称为布尔运算?

我发现它们在第5.4.1节的第一行中被称为布尔运算(第5.4节是关系代数和数据记录),这本书由Ullman& A,DATABASE SYSTEMS命名为A First Course in DATABASE SYSTEMS。代表智慧。

2 个答案:

答案 0 :(得分:0)

您引用的声明来自Ullman和Widom(Pearson 2013)的“数据库系统第一课程”一书的第5章(代数和逻辑查询语言)。

特别是,该章的第5.3和5.4节处理语言Datalog,它可用于处理关系数据库,其中Relation被视为谓词一套(见5.3.1节)。

换句话说,R的元组(x1,x2,...,xn)被视为对于指定的参数(x1,x2,...,xn),关系R为真的事实。通过这种方式,可以将在关系代数(并集,差异,交集)的上下文中讨论的集合运算符转换为通过使用布尔运算符(如AND,NOT等)表达的Datalog规则。

事实上,你可以在同一本书中看到,在2.4.4节中,它们被称为集合运算符(实际上是它们),所以我认为“布尔运算符”的命名是由于它们的事实与布尔运算符严格相关,并在数据库的逻辑视图的上下文中进行讨论。

答案 1 :(得分:0)

“布尔”关系运算的概念是该书和章节中的一种特殊的临时区分/分类。作者确定了3个“常见的关系运算符”,“每个运算符都可以在Datalog中简单表达”。同一级别的下一部分继续表达其他一些关系运算符。 (“选择在Datalog中可能更难以表达。”)3个运算符的处理方式彼此相似,并且在某种特定于上下文的“布尔”方式中与其他运算符不同。 (所以这不是一个特别有用或深刻的区别。)

  

5.4.1布尔运算

     

关系代数的布尔运算 - 并集,交集和集合   差异 - 每个都可以在Datalog中简单表达。

  
      
  • 取结合R∪S,[...]结果,R中的每个元组和S的每个元组都被置于答案关系中。
  •   
  • 要取交点R∩S,[...]然后,当且仅当它在R和S中时,元组才处于答案关系中。
  •   
  • 取差值R - S,[...]然后,元组在答案关系中,当且仅当它在R中但不在S中时。
  •   

所以“boolean”是因为每个关系运算符对应于该上下文中的某个布尔运算符:

UNION返回一个操作数或另一个操作数的元组 INTERSECTION返回一个操作数和另一个操作数中的元组 DIFFERENCE返回一个操作数中的元组而不返回另一个操作数中的元组

(Datalog也字面上使用AND和AND NOT,但OR是隐含的。)

更重要的是,这可以换句话说:如果每个基本关系都包含从某些关联的谓词创建真正的命题(语句)的元组(句子模板参数化)通过属性名称)然后每个结果都有一个由其操作数谓词构成的谓词,并且它的值保存了从该谓词构成真正命题的元组:

U包含 U 的元组 V保存 V 的元组 U UNION V保存 U V 的元组 U INTERSECTION V保存元组,其中 U AND V
U DIFFERENCE V保存元组 U 而不是 V

但不仅如此,那些运算符对应于一些布尔命题逻辑连接词/非终结符,但每个关系运算符对应于谓词逻辑连接/非终结符号,每个查询表达式都有一个关联的谓词,每个查询结果值都包含从该谓词构成真正命题的元组:

U JOIN V保存 U AND V 的元组 R RESTRICT condition 保存 U 条件的元组 U PROJECT A保存元组的所有属性的FORSOME值,但A, U
U RENAME A A'保存 U 的元组,其中A替换为A'

因此,这本书将这三个算子与语法和语法联系起来。 Datalog的语义,但实际上所有运算符都可以与语法和语法相关联。 谓词逻辑的语义。这是数学,科学(包括计算机科学)和数学中精确度的语言/符号。工程(包括软件工程)。事实上,就是我们如何知道查询的含义。因此,这三个运算符在某种意义上并不是布尔值,因为所有关系运算符都是逻辑:每个关系表达式都对应一个谓词逻辑表达式。

(三个运算符也经常被称为“集合运算符”,因为作为结果关系的主体的集合来自作为操作数关系的主体的集合,根据集合运算符具有相同的名称。这可能是一种有用的方式将它们组合在你的脑海中或记住它们或它们的名字,毫无疑问激发了它们的名字。但是鉴于关系运算符和谓词逻辑连接词/非终结符之间的对应关系以及关系表达式和谓词之间的对应关系逻辑表达式和谓词与关系值之间的对应关系,一些关系运算符让人想起某些集合运算符的事实完全不相关。)(就像有些运算符让人联想到布尔运算符一样。就像那样你可以用“关系”来制作一个代数,它的身体是袋子而不是套装。)