关于如何在关系代数中正确使用div运算符的正确语法?

时间:2014-09-01 00:28:24

标签: relation relational-algebra

我的问题也基于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运算符会非常有用。

1 个答案:

答案 0 :(得分:1)

找到所有披萨店,供人们吃过的每一份披萨......

找到所有披萨店,只供应人们吃过的披萨......

已经存在不同的问题。

第一个应该归还所有披萨店的比萨店,其中披萨的一组超集被任何人吃过...... < / p>

第二个应该归还所有披萨店的比萨店,这些比萨饼是任何人吃过的比萨饼的子集 ...... / p>

另一个问题是找到披萨的披萨,它们与任何人吃过的比萨饼都相等 ......

问题的这个方面可能是RA系统(包括SQL处理器)没有直接支持除法运算符的主要原因:关系鸿沟可以有很多种类,而且很难分辨用户需要哪一种

重新解释问题,使其说明等效内容,然后将 转换为RA或SQL,例如类似于&#34;找到所有比萨饼店的Z,这样就不存在任何披萨P和/或人PRS结束......并且PRS吃P,并且P不被Z&#34;

或类似的东西&#34;找到所有比萨饼店不属于那些不供30岁以上任何人吃掉的披萨的那些比萨店。