目前正在数据库课上学习关系代数,并与另一名学生就该说法进行辩论
/Project pizza (/Select age < 24 (Person ⋈ Eats))
这个声明会返还24岁以下的人吃过的所有披萨吗?
此处的架构-
Person (name, age, gender)
Frequents (name, pizzeria)
Eats (name, pizza)
Serves (pizzeria, pizza, price)
我的同事认为,因为我们正在投影披萨,而该人的模式不包含披萨,所以它不会起作用。但我相信,因为我们加入了 Person 和 Eats,从而创建了一种新的关系,我们可以根据该关系来投影披萨,并可以根据年龄进行选择。
最佳答案
要获得正确的答案,只需评估表达式即可:
人/加入吃饭
将生成一张 table ,其中每个吃披萨的人都在场。它的架构现在是:
(姓名、年龄、性别、披萨)
现在你选择了。该选择不会影响架构,因此其结果的架构是相同的。
现在您投影披萨。架构很简单(披萨)。
现在您已经预测了 24 岁以下人群吃的披萨的名称。
所以是的,你是对的。 JOIN 创建一个新表。
--dmg
关于relational-database - 这个关系代数陈述是否会满足我的期望,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15944907/