请清除关于关系代数/元组关系演算的这种混淆

时间:2015-10-15 07:23:39

标签: relational-database relational-algebra cartesian-product cross-join tuple-relational-calculus

1:对此查询的解释是"所有元组 t 的集合,使得借用关系中存在元组 s c 属性的 t s 的值相等, s的值 em>对于金额属性大于1200"。但我们从未提及 t 所属的关系。它有什么关系,为什么?

enter image description here

2:在基础图像中," AND"这两个投影(包含属性" CustomerID"来自"客户"关系&属性&# 34; orderID"来自" order"关系)给出这两个单列关系的笛卡尔积? enter image description here

1 个答案:

答案 0 :(得分:0)

1:

出现在左侧的

元组 t 答案的元组。 { t | ... t ...}表示"每个值的集合, t ,这样...... t 。 ..是真的"。对于每个元组值,我们将其称为 t ,如果它满足条件,那么它就在答案中。

2:

在第1部分"∧"用于关系元组微积分查询中的谓词逻辑表达式中的连接AND。在2中,您在两个关系表达式之间使用它作为关系代数运算符。通常"⋈"用于NATURAL JOIN和"⨯"用于CARTESIAN PRODUCT(又名CROSS JOIN)。有时候只有一个NATURAL JOIN操作符,如果没有常用属性,那么它的use / value就叫做笛卡尔积。

这是两种不同的表达方式。然而"∧"虽然用于不同的东西,但可以在两者中使用。这不是一个问题,因为在两个谓词逻辑表达式之间,它显然是AND,而在两个关系代数表达式之间,它显然是一个关系代数运算符。我希望这是天然加入。我还没有看到它用于CARTESIAN PRODUCT,但请记住,没有共同属性的NATURAL JOIN是/返回"笛卡尔积"。所以你的例子确实"给出这两个"的笛卡尔积。

某些关系代数变体具有使用唯一属性名称无序的元组。然后通常CARTESIAN PRODUCT采用两个没有共同属性的关系并返回他们的NATURAL JOIN。由于微积分示例中的元组 t 的属性名称没有给出任何顺序,也许它就是那种关系。

某些关系代数变体具有有序元组,其中属性名称可以多次出现。然后,通常CARTESIAN PRODUCT会返回多次出现常见属性名称的元组。这似乎是the slides for the textbook by Silberschatz, Korth & Sudarshan中的情况。 (其中使用"∧"仅作为AND。)然后,NATURAL JOIN只有一个共同属性的副本,但CARTESIAN JOIN有两个,所以它们可以不同。但在您的示例中,两个PROJECTION结果具有不相交的属性集。因此,NATURAL JOIN和CARTESIAN PRODUCT将返回相同的关系。 (假设属性顺序相同。)

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

使用您的讲师/教科书告诉您使用的关系,操作符和符号。如果有疑问定义您的符号或使用单词。