在示例数据库中创建关系代数方程

Making relational algebra equations in a sample database

我偶然发现了斯坦福大学关系代数的练习论文,关系为:-

人物(姓名、年龄、性别) 名字是一个键。

常客(姓名、比萨店) (name, pizzeria) 是一把钥匙。

吃(名字,披萨) (name, pizza) 是一把钥匙。

供应(比萨店、比萨、价格) (pizzeria, pizza) 是一把钥匙。

这两个是我考不上的题。 1.Find 所有只经常光顾比萨饼店的人的名字,这些比萨饼店至少供应他们吃的一种比萨饼。

2.Find 所有经常光顾每家比萨饼店的人的名字,至少提供他们吃的一种比萨饼。

首先我无法理解这两个问题的含义之间的区别。 其次,任何人都可以向我解释网站上给出的这些问题的答案吗? 网页的 link 如下所示。问题对应第一个问题的g.和h.部分。

http://openclassroom.stanford.edu/MainFolder/courses/IntroToDatabases/old-site/docs/backup/ra-exercises.html

两者的区别:

"Find the names of all people who frequent every pizzeria serving at least one pizza they eat." 有 "every pizzeria serving ..." 作为合格条件。假设这些比萨店的集合是{P1 P2}。假设我经常光顾的比萨店集合是{P1 P2 P3}。即使 P3 包含在该集合中,我仍然经常出现“......每个比萨饼店都供应......”的情况,因为不存在任何比萨饼店 Px 至少供应我吃的一个比萨饼(因此 Px 要么是 P1或 P2)而且我不经常这样做。你可能想知道为什么我会经常去 P3 如果它不提供我吃的任何东西,那么这可能例如这样我就可以弄清楚他们是否已经开始供应我吃的东西了。简介:合格条件是{P1 P2}是否是我常去的比萨店的子集。

"Find the names of all people who frequent ONLY pizzerias serving at least one pizza they eat." 有不同的资格条件。在这种情况下,我经常出现的 P3 使我失去了获得结果集的资格。请注意,我不必经常使用 {P1 P2} 的 ALL。如果我只经常光顾 P1,甚至根本不光顾比萨饼店(!!!!!!!! 一个经常被错误地忽视的危险边缘案例),情况仍然如此,我只经常光顾比萨饼店至少供应我吃的一个比萨饼. Brief : 合格条件是我经常光顾的披萨店是否是{P1 P2}的子集。

另一个符合条件的条件是 "frequent all and only those pizzeria's ..."。在那种情况下,合格条件是所提到的两组之间的相等性。