【发布时间】:2017-04-09 09:18:58
【问题描述】:
我正在为学校即将举行的考试做准备。
在处理一些示例问题时,我遇到了一个特定问题。
Passenger {p_id, p_name, p_nation} with key {p_id}
Flight {f_no, f_date, f_orig, f_dest} with key {f_no, f_date}
Trip {p_id, f_no, f_date, class} with key {p_id, f_no,f date}
and foreign keys [p_id] ⊆ Passenger[p_id] and [f_no, f_date] ⊆ Flight[f_no, f_date]
问题问:
考虑乘客在从成田机场起飞的航班上所乘坐的舱位。 用关系代数写:有哪些乘客的 id 从成田机场乘坐这些班至少一次?
到目前为止我所做的是:
-- rename class to class' in Trip and join with Trip
Q1 = Trip JOIN RENAME class\class' (Trip)
-- select those Q1 tuples where class = class'
Q2 = RESTRICT class = class' (Q2)
-- Project for those who traveled in different classes more than once
Q3 = PROJECT p_id (Q1 - Q2)
Q3 将向我显示(如果我做得正确的话)多次乘坐不同舱位的乘客的所有 ID。
有人可以帮助我进一步了解这一点吗?
【问题讨论】:
-
谷歌 'unicode 关系投影' 等以获取您需要的字符作为文本。 Aso 'unicode 数学符号'。
-
您对 Q1 的表述没有意义。 JOIN 的右操作数没有提到重命名发生的关系。另外,有很多关系代数变体,所以请参考你的。 (到目前为止,我们只知道您使用过的运算符。) PS 请参阅 [this](stackoverflow.com/a/41800639/3404097].
-
您的 Q3 评论“那些曾多次乘坐不同等级[es] 的人”不清楚。后来您说 Q3 是“多次乘坐不同舱位的乘客”,但这也不清楚。请编辑以实际描述您想要的元组。 (如果你不能用自然语言说清楚,你怎么能希望用代数说清楚呢?)你为什么认为你的 Q3 代码给出了这些 id? PS 我尽我所能编辑了你的语言和格式。请注意,我将
(Trip)添加到您的代码的文本版本中。