Join
證明內連接是可交換的
我試圖向自己證明內部連接的順序無關緊要,但是,從抽象的意義上說,我什麼都沒有。
如何證明執行以將許多表轉換為單個表的一組 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 順序如何,選擇必須選擇哪些笛卡爾元素的條件都是相同的,因此不會影響此推理。
關聯性的證明遵循相同的推理路線。