SELECT * FROM Schools JOIN Masts on Schools.City = Masts.City
變爲:檢查我的SQL關係代數?
Schools ⋊ Masts = σSchools.city = masts.city SCHOOLS X MASTS
am我有這正確嗎?希望有人在接下來的20分鐘左右快速回答。
SELECT * FROM Schools JOIN Masts on Schools.City = Masts.City
變爲:檢查我的SQL關係代數?
Schools ⋊ Masts = σSchools.city = masts.city SCHOOLS X MASTS
am我有這正確嗎?希望有人在接下來的20分鐘左右快速回答。
如果您沒有這本書的副本:Applied Mathematics for Database Professionals,那麼您確實應該查看它。它非常幫助我解決這些問題。 (精裝是一個真正的發現,但只有一個副本,它的方式太昂貴—但也有軟封面版本和可用的電子書格式,太。)
此外,檢查出這個非常好的Wikipedia文章關係代數論。
上面的維基百科文章顯示,您要完成的操作稱爲equijoin,它是θ -join的專用形式。使用你上面的例子,你應該有輸出如下:
令:
然後:
S⨝ θ M→ σ θ(S × M)
在書中應用數學數據庫專業人士,作者用「下級」關係代數來定義SQL JOIN
。定義如下:
令:
然後:
{S∪ m | s∧ S∧ ∈ M∧ s(城市)= m(城市)}
作者進一步使用操作符⊗ (也許是更容易爲他們發佈的符號,而不是使用傳統的⨝符號—是沒有意義的,雖然,因爲他們沒有使用乳膠—但我會與傳統的符號棒):
R⨝ θ T→ {r∪ t | r∧ R∧ t𢈈 T∧ 「- [R和噸是相容的」}
兼容性爲 「用戶定義的」,因此&#x2a1d; θ。 θ可以是任何關係運算符,<,>等。當測試兩個屬性等於作爲成功連接條件的結果時,則θ&#x2192; =,如前所述,這是一個專門的θ -join被稱爲equijoin。
所以,畢竟那個:
R&#x2a1d; θ T&#x2192; σ θ(R × T)&#x2192; {r&#x222a; t | r&#x2227; R&#x2227; t&#x22208; T&#x2227; 「[R和噸兼容」}
我知道這是從您發佈的更晚20多分鐘,但希望有人發現了它有幫助。