【发布时间】:2019-07-26 08:00:04
【问题描述】:
我知道正确答案,但我不太确定其中的一部分。
RA 是一个关系代数解释器,它将关系代数查询转换为 SQL 查询,然后在标准关系数据库系统上执行 SQL。因此该语言类似于 SQL,但基于关系代数。
这里是示例数据库:
Serves(pizzeria, pizza, price)
Eats (name, pizza)
Person (name, age, gender)
查找所有仅提供 30 岁以上人士食用的比萨饼的比萨店
\project_{pizzeria} Serves \diff \project_{pizzeria} ( Serves \join ( (\project_{pizza} Serves) \diff (\project_{pizza} ((\select_{age>'30'} Person) \join Eats)) ) )
我不明白的是查询的最后一部分:
\project_{pizza} ((\select_{age>'30'} Person) \join Eats)
您不想区分年龄 30 吗?这将减去所有小于 30 岁的年龄,并留下所有年龄 > 30 岁的人,不是吗?然而,我知道这是错误的。有人能解释一下这背后的逻辑吗?
【问题讨论】:
-
请查看您查询的格式化版本并去掉反斜杠、下划线和花括号——它们是此处未使用的格式元字符。请阅读编辑帮助:在普通文本中,如果您想要换行符,请以两个空格结束该行。请合理缩进代码以反映嵌套
-
不>30的人是
-
当您引用某人时(例如他们网页上对 RA 的描述),请给予他们信任并格式化为引用。请参阅块引用格式的编辑帮助。另外请让您的问题文本完整,不要只在标题中添加需要的内容。
标签: relational-database relational-algebra