我正在学习斯坦福数据库课程,有一个问题是,我们让找到所有的比萨店,这些比萨饼只能使用关系代数为30岁以上的人所吃的比萨提供服务。
这个问题由具有四种关系的小型数据库:组成
Person(name, age, gender) // name is a key
Frequents(name, pizzeria) // [name,pizzeria] is a key
Eats(name, pizza) // [name,pizza] is a key
Serves(pizzeria, pizza, price) // [pizzeria,pizza] is a key我知道如何找到30岁以上的人吃什么比萨饼,并制作一个交叉产品,这样我就可以检查哪个比萨饼店两者都有。
我可以列出所有提供披萨的比萨饼店,但我不知道如何移除任何只有一个组合的比萨店(比如多米尼克)。
Chicago Pizza cheese cheese
Chicago Pizza cheese supreme
Chicago Pizza supreme cheese
Chicago Pizza supreme supreme
Dominos cheese cheese
Dominos cheese supremeQ&A论坛告诉我们使用除法和给我们看几个演讲。,当我得到操作的结果时,我并不真正理解如何将公式转换为关系代数语法。
有谁能解释我错过了什么,希望没有给出直接的解决方案?
发布于 2011-10-28 01:31:25
解决方案是join div操作符.28.C3.B7.29。
请参阅http://oracletoday.blogspot.com/2008/04/relational-algebra-division-in-sql.html
发布于 2014-01-22 14:30:18
这无疑是关系代数中除法算子的概念。
但我试过那道菜。RA关系代数语法不支持dev算子。所以我用了迪夫和克罗斯代替了。这是我的解决方案:
\project_{pizzeria}(Serves)
\diff
\project_{pizzeria}(
(\project_{pizzeria}(Serves)
\cross
\project_{pizza}(\project_{name}(\select_{age>30}(Person))\join Eats))
\diff
\project_{pizzeria,pizza}(Serves)
)发布于 2011-10-19 15:14:27
(3 1 7)。o / n的结果是(4 8)。o也拥有(12 3)和(12 1),而不是(12 7),那么12就不会成为o / n的一部分。你应该能够在幻灯片16上的公式中填写一个例子并计算出来。
ɑ是:
芝加哥比萨奶酪芝加哥比萨奶酪芝加哥比萨至尊奶酪芝加哥比萨至尊多米尼克奶酪多米尼克奶酪至尊β是:
奶酪至尊至高无上ɑ / β的结果将是:
芝加哥比萨Dominos并不是其中的一部分,因为它想念(supreme cheese)和(supreme supreme)。
https://stackoverflow.com/questions/7821695
复制相似问题