SELECT * FROM Schools JOIN Masts on Schools.City = Masts.City
变为:
Schools ⋊ Masts = σSchools.city = masts.city SCHOOLS X MASTS
我对此是否正确?希望有人在接下来的20分钟左右快速回答。
答案 0 :(得分:1)
如果你没有这本书的副本:Applied Mathematics for Database Professionals,你真的应该检查一下。它极大地帮助了我解决这些问题。 (精装书是一个真正的发现,但只有一个副本,它太昂贵了 - 但也有软封面版本和电子书格式。)
另外,请查看关于关系代数的这篇非常好的Wikipedia文章。
上面的维基百科文章显示,您要完成的任务称为equijoin,这是一种特殊形式的θ-join。使用上面的示例,您应该输出以下内容:
让:
然后:
S⨝θ M→σθ(S×M)
在数据库专业应用数学一书中,作者使用“低级”关系代数来定义SQL JOIN
。定义如下:
让:
然后:
{s∪m | s∈S∧m∈M∧s(City)= m(City)}
作者进一步继续使用运算符give给出了上述的一般定义(也许他们更容易发布该符号而不是使用传统的⨝符号 - 虽然没有意义,因为他们确实使用乳胶 - 但我会坚持传统的符号):
R⨝θ T→{r∪t| r∈R∧t∈T∧“ r 和 t 兼容”}
兼容性是“用户定义的”,因此⨝θ。 θ可以是任何关系运算符,<,>等等。当测试两个属性相等是成功连接条件的结果时,则θ→=,并且如前所述,这是已知的专用θ-连接作为 equijoin 。
所以,毕竟:
R⨝θ T→σθ(R×T)→{r∪t| r∈R∧t∈T∧“ r 和 t 兼容”}
我知道这比你发布的时间晚了20分钟,但希望有人觉得它有用。