2

为什么元组关系演算中需要量词?
可以说我有这个声明:

{S.sname | 学生中的 S 和(年级中存在 G)(Ss# = Gs#)};

为什么我不能只使用它呢?

{S.sname | 学生的 S 和年级的 G 和 Ss# = Gs#};

4

1 回答 1

2

查询返回相同的值。但是在第二个例子中,你也可以要求G.grade学生的,而在第一个例子中你不能。元组关系演算表达式的右侧描述了一组元组,其中仅保留了左侧的属性。这里的两个右侧表达式描述了不同的元组集,但左侧的投影恰好从两者中留下相同的值。

两者之间的区别在于 ,第一个描述的关系仅具有属性,而第二个描述的关系具有&的属性。
r IN R AND EXISTS s IN S (etc)
r IN R AND s IN S ANDetc
RRS

假设任何T与属性的关系...都包含某个表达式所在的行T(...)。那么<...> IN T当且仅当T(...)

然后我们可以将上述两种关系描述为(分别)满足的元组 这种表示法(或多或少)称为关系演算。
R(...) AND EXISTSattributes in S & etc but not in R(S(...) ANDetc)
R(...) AND S(...) ANDetc

假设我们在关系上定义了以下运算符:保存行 where保存行 where
PROJECTsome attributes of TTEXISTSother attributes of TT(...)
T NATURAL JOIN UT(...) AND U(...)

然后我们可以将上述两种关系描述为(分别)中的元组 这种表示法称为关系代数
R NATURAL JOIN PROJECTattributes in S & etc also in R(S NATURAL JOINetc)
R NATURAL JOIN S NATURAL JOINetc

于 2016-10-30T09:50:06.853 回答