1:对这个查询给出的解释是“所有元组t的集合,使得在关系借用中存在一个元组s ,其cname属性的t和s的值相等,并且s的值表示数量属性大于 1200"。但是我们从来没有提到t属于哪个关系。它是什么关系,为什么?
2:在底层图像中,对这两个投影进行“与”运算(包含“客户”关系中的属性“CustomerID”和“订单”关系中的属性“orderID”)是否给出了这两个单列关系的笛卡尔积?
1:
出现在左侧的元组t是answer的元组。{吨| ... t ... } 表示“每个值的集合,t说,使得 ... t ... 为真”。对于每个元组值,我们将其称为t,如果它满足条件,则它会进入答案。
2:
在第 1 部分中,“∧”用于关系元组演算查询中谓词逻辑表达式中的连接 AND。在 2 中,您在两个关系表达式之间使用它作为关系代数运算符。通常“⋈”用于 NATURAL JOIN,“⨯”用于 CARTESIAN PRODUCT(又名 CROSS JOIN)。有时只有一个 NATURAL JOIN 运算符,如果它没有共同属性使用,那么它的用途/价值就被称为笛卡尔积。
这是两种不同的表达方式。然而,“∧”可以在两者中使用,尽管用于不同的事物。这不是问题,因为在两个谓词逻辑表达式之间它显然是 AND,而在两个关系代数表达式之间它显然是一个关系代数运算符。我希望这是自然加入。我还没有看到它用于笛卡尔积,但请记住,没有共同属性的 NATURAL JOIN 是/返回“笛卡尔积”。所以你的例子确实“给出了这两者的笛卡尔积”。
一些关系代数变体具有无序且具有唯一属性名称的元组。然后通常 CARTESIAN PRODUCT 采用两个没有任何共同属性的关系并返回它们的 NATURAL JOIN。由于您的微积分示例中的元组t的属性名称没有给出任何顺序,也许就是这种关系。
一些关系代数变体具有有序的元组,其中属性名称可以出现多次。然后通常 CARTESIAN PRODUCT 返回具有多次出现的公共属性名称的元组。Silberschatz、Korth 和 Sudarshan 的教科书幻灯片中似乎就是这种情况。(其中仅使用“∧”作为 AND。)然后 NATURAL JOIN 只有一个公共属性副本,但 CARTESIAN JOIN 有两个,因此它们可以不同。但是在您的示例中,两个 PROJECTION 结果具有不相交的属性集。因此 NATURAL JOIN 和 CARTESIAN PRODUCT 将返回相同的关系。(假设属性顺序相同。)
[相同的符号有时用于 AND 和 NATURAL JOIN(并且可以用于笛卡尔积)的原因是,如果关系代数表达式 R 持有元组,其中 r(...) 和关系代数表达式 S 持有元组,其中 s (...) 然后 R NATURAL JOIN S 保存 r(...) AND s(...) 的元组。事实上,每个关系代数表达式都是相应的关系演算表达式的值,其中关系名称对应于给定的谓词(含义),逻辑运算符对应于关系运算符。]
使用教师/教科书告诉您使用的关系、运算符和符号。如果有疑问,请定义您的符号或使用文字。