1

这项调查最初是从一个测试问题开始的,我在其中断言

    R ∩ S = R ∩ (R ∩ S)

正如我所研究的那样,我无法提供有关关系代数中交集属性的大量信息。

如果这是集合论,我会断言

    R ∩ (R ∩ S) => Associativity
      (R ∩ R) ∩ S => Idempotence
          (R) ∩ S = R ∩ S

使用关系代数,我们改为对袋子进行操作。我相信我可以用袋子采取同样的步骤(幂等性似乎微不足道,并且在http://comet.lehman.cuny.edu/stjohn/teaching/db/ullmanSlidesF00/slides7.pdf的第 3 页建议使用关联性),但是我不能完全得到一个正式的证明。

任何人都可以帮助我断言(或通过反例或其他方式反驳)关系代数中交集的关联性和幂等性吗?

非常感谢。

4

2 回答 2

0

关系模型是在集合上正式定义的,因此关系代数仅在集合上定义。但是由于关系数据库扩展了模型以包含多集或包,关系代数也类似地扩展到了多集,几乎所有关于数据库的现代书籍都描述了这种扩展。

特别是,使用符号 Op b表示运算符 Op 在多重集上的变体,我们可以定义运算符 ∩<sup>b、∪<sup>b 和 -<sup>b 如下:

R ∩<sup>b S:如果一个元素t在 R 中出现n次,在 S 中出现m次,则它在 R 中出现min(n,m)次 ∩<sup>b S;

R ∪<sup>b S:如果一个元素t在 R 中出现n次,在 S 中出现m次,则它在 R ∪<sup>b S 中出现n+m次;

R -<sup>b S:如果元素t在 R 中出现n次,在 S 中出现m次,则它在 R -<sup>b S 中出现max(0,nm)次。


你想证明:

R ∩<sup>b S = R ∩<sup>b (R ∩<sup>b S)

正如您的正确推导所示,如果我们可以证明运算符 ∩<sup>b 的关联性和幂等性,则可以证明这一点。

幂等性:

R ∩<sup>b R = R

在这种情况下,由于每个元素在两个操作数中出现的次数相同,即m = n,我们有它在结果中出现min(n, n) = n次,即出现相同的次数的R。

关联性:

(R ∩<sup>b S) ∩<sup>b T = R ∩<sup>b (S ∩<sup>b T)

假设某个元素t在 R 中出现n次,在 S中出现m次,在 T 中出现k次,我们有:

(R ∩<sup>b S) ∩<sup>b T

它将在结果中出现min(min(n,m), k)次,这等于min(n,m,k)。另一方面,在:

R ∩<sup>b (S ∩<sup>b T)

它会在结果中出现min(n, min(m,k))次,但这又等于min(n,m,k)

所以这意味着它在两个结果中出现的次数相同,所以两个结果是相等的。

于 2016-03-19T07:04:09.710 回答
0

正如 philipxy 已经评论过的,关系是集合,因此适用集合论。下面提供的链接为您提供了转换等价列表,其中列出了并集和交集的关联属性。

http://www.postgresql.org/message-id/attachment/32495/equivalenceRules.pdf

可能会提出一个问题,即有多少关系代数定理在 SQL 数据库而不是关系代数领域被证明是正确的。这是有问题的,因为任何给定的实现都可能存在错误,甚至 SQL 模型中也可能存在缺陷。我倾向于盲目地假设关系代数的结果会延续到实际世界,但一些深刻的思想家在这方面听起来很谨慎。

于 2016-03-19T13:56:30.143 回答