Join

證明內連接是可交換的

  • January 13, 2017

我試圖向自己證明內部連接的順序無關緊要,但是,從抽象的意義上說,我什麼都沒有。

如何證明執行以將許多表轉換為單個表的一組 INNER JOIN 的順序不會影響結果集(即證明 INNER JOIN 操作的交換性和關聯性)?

內連接是笛卡爾積中滿足特定條件的行的子集。儘管笛卡爾積不是可交換的(也不是關聯的),但它與關係理論有關。

之所以如此,是因為屬性的順序在關係理論中並不重要。如果 A 和 B 是表,則:

A x B = { (a1, a2, .., an, b1, b2, .. bn) | (a1..an) € A and (b1..bn) € B}
     = { (b1, b2, .., bn, a1, a2, .. an) | (a1..an) € A and (b1..bn) € B}  ((1))
     = { (b1, b2, .., bn, a1, a2, .. an) | (b1..bn) € B and (a1..an) € A}  ((2))
     = B x A                                                               ((3))

((1)) 因為屬性的順序無關緊要

((2)) 因為邏輯 and 是可交換的

((3)) 根據 B x A 的定義

無論 JOIN 順序如何,選擇必須選擇哪些笛卡爾元素的條件都是相同的,因此不會影響此推理。

關聯性的證明遵循相同的推理路線。

引用自:https://dba.stackexchange.com/questions/160916