首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找到每一个30岁以上的人吃比萨饼的披萨店?

如何找到每一个30岁以上的人吃比萨饼的披萨店?
EN

Stack Overflow用户
提问于 2011-10-19 13:01:07
回答 8查看 14.5K关注 0票数 16

我正在学习斯坦福数据库课程,有一个问题是,我们让找到所有的比萨店,这些比萨饼只能使用关系代数为30岁以上的人所吃的比萨提供服务。

这个问题由具有四种关系的小型数据库:组成

代码语言:javascript
复制
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岁以上的人吃什么比萨饼,并制作一个交叉产品,这样我就可以检查哪个比萨饼店两者都有。

我可以列出所有提供披萨的比萨饼店,但我不知道如何移除任何只有一个组合的比萨店(比如多米尼克)。

代码语言:javascript
复制
Chicago Pizza   cheese  cheese
Chicago Pizza   cheese  supreme
Chicago Pizza   supreme cheese
Chicago Pizza   supreme supreme
Dominos         cheese  cheese
Dominos         cheese  supreme

Q&A论坛告诉我们使用除法和给我们看几个演讲。,当我得到操作的结果时,我并不真正理解如何将公式转换为关系代数语法。

有谁能解释我错过了什么,希望没有给出直接的解决方案?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-10-28 01:31:25

解决方案是join div操作符.28.C3.B7.29

请参阅http://oracletoday.blogspot.com/2008/04/relational-algebra-division-in-sql.html

票数 6
EN

Stack Overflow用户

发布于 2014-01-22 14:30:18

这无疑是关系代数中除法算子的概念。

但我试过那道菜。RA关系代数语法不支持dev算子。所以我用了迪夫和克罗斯代替了。这是我的解决方案:

代码语言:javascript
复制
\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)
)
票数 8
EN

Stack Overflow用户

发布于 2011-10-19 15:14:27

  1. 在幻灯片6中,请注意n是(3 1 7)
  2. 在下一张幻灯片中,o / n的结果是(4 8)
  3. 如果o也拥有(12 3)(12 1),而不是(12 7),那么12就不会成为o / n的一部分。

你应该能够在幻灯片16上的公式中填写一个例子并计算出来。

  1. 在您的例子中,我们认为ɑ是: 芝加哥比萨奶酪芝加哥比萨奶酪芝加哥比萨至尊奶酪芝加哥比萨至尊多米尼克奶酪多米尼克奶酪至尊
  2. 然后我们认为β是: 奶酪至尊至高无上
  3. 然后,ɑ / β的结果将是: 芝加哥比萨

Dominos并不是其中的一部分,因为它想念(supreme cheese)(supreme supreme)

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7821695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档