为什么联合兼容性条件不适用于笛卡尔积?

问题描述 投票:0回答:1

在研究关系代数时,我发现在任何关系模式上应用UNION,INTERSECTION和SET DIFFERENCE,关系模式需要具有UNION COMPATIBLE,因为这些操作是设置操作

但是笛卡尔积也是固定运算,那么当我们在两个关系模式上应用笛卡尔积运算时,为什么不需要UNION COMPATIBILITY的条件呢?

rdbms relational-algebra cartesian-product
1个回答
1
投票

对于R&S集,

当且仅当它在S中的R OR中时,元组在R∪S中。 当且仅当它在R AND S中时,元组在R∩S中。 当且仅当它在R中且不在S中时,元组在R - S中。

对于关系(定义为集合或集合加上标题),

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

所以我们可以合理地调用这些“set”或“boolean”操作。

如果每个基本关系都包含从某个关联谓词(由属性名称参数化的句子模板)构成真命题(语句)的元组,那么每个查询结果都有一个由其操作数谓词构成的谓词,并且其值保存构成true的元组来自该谓词的命题:

假设U持有元组,其中U&V持有V的元组。

U UNION V持有U OR V的元组 U INTERSECTION V持有U和V的元组 U DIFFERENCE V持有U AND NOT V的元组

但更重要的是,这些运算符不仅仅对应于一些布尔命题逻辑连接词/非终结符,而且每个关系运算符对应一个谓词逻辑连接/非终结符,每个查询表达式都有一个关联的谓词,每个查询结果值都包含元组从该谓词中提出一个真正的命题:

U JOIN V持有U和V的元组 U RESTRICTcondition持有U AND条件的元组 U PROJECT A持有所有属性的FORSOME值但是A,U的元组 U RENAME A A'持有元组,其中U与A替换为A'

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

调用三个“集合运算符”,因为作为结果关系的主体的集合来自作为操作数关系的主体的集合,根据集合运算符具有相同的名称。这可能是一种有用的方式,可以将它们组合在一起,或者记住它们或它们的名字,这无疑激发了它们的名字。但是鉴于关系运算符和谓词逻辑连接词/非终结符之间的对应关系以及关系表达式和谓词逻辑表达式之间的对应关系以及谓词和关系值之间的对应关系,一些关系运算符让人想起某些集合运算符的事实是完全无关紧要的。

(事实上​​,你可以用关系之类的东西做代数,但是它的身体是袋子而不是套装。)

© www.soinside.com 2019 - 2024. All rights reserved.