这是我用于查询的数据库
https://class.stanford.edu/c4x/DB/RA/asset/pizzadata.html
写出关系代数查询的语法基于http://www.cs.duke.edu/~junyang/ra/。
我的询问是“找到至少一名20岁以上的女性吃过的所有比萨饼。” 这就是我到目前为止所拥有的
\project_{name,pizza}(
Person \join_{gender='female' and age>20} Eats
)
我认为我在这里有正确的逻辑。(“\ join_ {cond}是关系theta-join运算符。”)我还显示了名称列以进行调试。我正在加入两个关系,只保留性别为女性和年龄的行> 20.
我的查询结果(针对正确的查询)。我不认为这是一个语法问题。在Eats关系中,Fay只吃蘑菇。我不明白为什么她会与每个披萨组合配对
答案 0 :(得分:2)
Person
如何,您都会加gender='female' and age>20
Eats
行的每一行name
。你可能想要:
Person \join_{gender='female' and age>20 and name=eater} \rename{eater, pizza} Eats
请注意,Thetas通常会增加行数;您通常会减少使用Sigmas或选择返回的行数。执行语句的更惯用的方法是使用Select和自然连接:
\select{gender='female' and age>20} Person \join Eats