【发布时间】:2016-10-19 04:49:31
【问题描述】:
假设我有一个Personstable,属性为{name, pet}。我如何选择他们拥有每种宠物的人的姓名(dog, cat, bird),但是如果一个人的宠物在表格中,则每个人只有一种宠物。
示例:Bob, Dog 和 Bob, Cat 是表中仅有的行。因此,Bob 拥有每一种宠物。但是在添加Lynda, Bird 的那一刻,Bob 不再拥有每种类型的宠物。
我认为第一步是π(pet)。由于关系代数删除了重复项,因此您会得到一份各种宠物的列表。不知道之后该怎么办,但我认为我需要加入 π(pet) 和 Persons。
我尝试了一些东西,例如 Natural Join 和 Cross products,但我还没有得出结果,而且我没有想法。
【问题讨论】:
-
您的描述不清楚。也许您的意思是“他们在表格中出现的每种宠物中都有一个”。如果您不强迫自己在自然语言中清晰,那么您如何期望在 RA 中清晰?或者为了证明某个特定的 RA 表达式表达了你的意思是合理的?你得到的确切的任务措辞是什么? (请注意,如果有更多列,“one”必须是“exactly one”或“at least one”。)
标签: join relational-algebra relational-division