请清除关于关系 algebra/tuple 关系演算的混淆

Please clear this confusion regarding relational algebra/tuple relational calculus

1:该查询给出的解释是"the set of all tuples t such that there exists a tuple s in the relation borrow for which the values of t and s for the cname attribute are equal, and the value of s for the amount attribute is greater than 1200"。但是我们从来没有提到 t 属于哪个关系。这是什么关系,为什么?

2:在底层图像中,是否 "AND"ing 这两个投影(包含来自 "customer" 关系的属性 "CustomerID" 和来自 [=42] 的属性 "orderID" =]关系)给出这两个单列关系的笛卡尔积?

1:

元组t,出现在左侧,是答案的元组。 { t | ...t...} 表示 "the set of every value, t say, such that ...t... is true"。对于每个元组值,我们将其称为 t,如果它满足条件,那么它就会进入答案。

2:

在第 1 部分中,“∧”用于关系元组演算查询中谓词逻辑表达式中的连接词 AND。在 2 中,您在两个关系表达式之间使用它作为关系代数运算符。通常“⋈”用于自然连接,“⨯”用于笛卡尔积(又名交叉连接)。有时只有一个 NATURAL JOIN 运算符,如果它没有公共属性,那么它的 use/value 就称为笛卡尔积。

这是两种不同的表达方式。然而,“∧”可以在两者中使用,尽管用于不同的事物。这不是问题,因为在两个谓词逻辑表达式之间显然是 AND,在两个关系代数表达式之间显然是关系代数运算符。我希望那是自然的连接。我还没有看到它用于 CARTESIAN PRODUCT,但请记住,没有公共属性的 NATURAL JOIN is/returns a "Cartesian product"。所以你的例子 "give the Cartesian product of these two".

一些关系代数变体具有无序且具有唯一属性名称的元组。然后,通常 CARTESIAN PRODUCT 采用两个没有任何共同属性的关系,并且 return 是它们的 NATURAL JOIN。由于您的微积分示例中元组 t 的属性名称未给出任何顺序,因此可能是那种关系。

一些关系代数变体对属性名称可以出现多次的元组进行排序。然后通常是 CARTESIAN PRODUCT returns 具有多次出现的公共属性名称的元组。 the slides for the textbook by Silberschatz, Korth & Sudarshan好像是这样的。 (它仅将“∧”用作 AND。)然后 NATURAL JOIN 只有一个公共属性副本,而 CARTESIAN JOIN 有两个,因此它们可以不同。但在您的示例中,两个 PROJECTION 结果具有不相交的属性集。所以 NATURAL JOIN 和 CARTESIAN PRODUCT 会 return 相同的关系。 (假设属性顺序相同。)

[相同符号有时用于 AND 和 NATURAL JOIN(并且可用于笛卡尔积)的原因是如果关系代数表达式 R 包含元组,其中 r(...) 和关系代数表达式 S保存元组,其中 s(...) 然后 R NATURAL JOIN S 保存元组,其中 r(...) AND s(...)。事实上,每个关系代数表达式都是相应的关系演算表达式的值,其中关系名称对应给定谓词(含义),逻辑运算符对应关系运算符。]

使用 instructor/textbook 告诉您使用的关系、运算符和符号。如果有疑问,定义你的符号或使用文字。