我的问题也基于How to find all pizzerias that serve every pizza eaten by people over 30?
这是我用于查询的数据库
https://class.stanford.edu/c4x/DB/RA/asset/pizzadata.html
写出关系代数查询的语法基于http://www.cs.duke.edu/~junyang/ra/。
我的目标是"找到所有比萨饼,只供30岁以上的人吃的披萨。 &#34 ;.我有一两个步骤,但我正在努力寻找完全匹配的比萨饼。根据我查看问题的最后一个帖子,似乎div操作员必须找到与给定的比萨饼列表完全匹配的比萨店。但是从http://www.cs.duke.edu/~junyang/ra/开始,我找不到这样的div运算符。 div操作员有解决方法吗?该主题上的其他答案太复杂,无法奏效。 这是我目前的查询
\project_{pizzeria, pizza} (
\select_{age > 30} (
Person \join Eats
)
\join
Serves
)
我所拥有的是一个查询,首先找到30岁以上的人并将他们与他们吃的比萨加入。然后我加入了Serves,这样我就可以看到那些为比萨饼服务的比萨饼店了。我知道我需要一个完全匹配 - 比萨饼只供30岁以上的人吃。这就是为什么我觉得div运算符会非常有用。
答案 0 :(得分:1)
找到所有披萨店,供人们吃过的每一份披萨......
和
找到所有披萨店,只供应人们吃过的披萨......
已经存在不同的问题。
第一个应该归还所有披萨店的比萨店,其中披萨的一组超集被任何人吃过...... < / p>
第二个应该归还所有披萨店的比萨店,这些比萨饼是任何人吃过的比萨饼的子集 ...... / p>
另一个问题是找到披萨的披萨,它们与任何人吃过的比萨饼都相等 ......
问题的这个方面可能是RA系统(包括SQL处理器)没有直接支持除法运算符的主要原因:关系鸿沟可以有很多种类,而且很难分辨用户需要哪一种
重新解释问题,使其说明等效内容,然后将 转换为RA或SQL,例如类似于&#34;找到所有比萨饼店的Z,这样就不存在任何披萨P和/或人PRS结束......并且PRS吃P,并且P不被Z&#34;
或类似的东西&#34;找到所有比萨饼店不属于那些不供30岁以上任何人吃掉的披萨的那些比萨店。