为什么在元组关系演算中需要量词?



为什么在元组关系演算中需要量词?
假设我有这样的语句:

{年代。学生中存在S,年级中存在G。s# = G.s#)};

为什么我不能用这个代替呢?

{年代。sname | S in Student and G in Grade and S.s# = G.s#};

查询返回相同的值。但在第二个例子中,你也可以问学生的G.grade,而在第一个例子中,你不能问。Tuple Relational Calculus表达式的右侧描述了一组元组,其中只保留了左侧的属性。这里,右边的两个表达式描述了不同的元组集合,但是左边的投影恰好留下了相同的值。


r IN R AND EXISTS s IN S ( etc )
r IN R AND s IN S AND etc
是第一种描述的关系只具有R的属性,而第二种描述的关系具有R的属性;S .

假设任何具有属性...的关系T包含某个表达式T(...)包含的行。则<...> IN T当且仅当T(...)

那么我们可以将上面的两个关系描述为(分别)满足
的元组R(...) AND EXISTS attributes in S & etc but not in R (S(...) AND etc )
R(...) AND S(...) AND etc
这种符号(或多或少)被称为关系演算。

假设在关系上定义以下操作符:
PROJECT some attributes of T T保存EXISTS other attributes of T T(...)
的行T NATURAL JOIN U保存T(...) AND U(...)

的行

则可以将上述两个关系分别描述为
中的元组。R NATURAL JOIN PROJECT attributes in S & etc also in R (S NATURAL JOIN etc )
R NATURAL JOIN S NATURAL JOIN etc
这种符号叫做关系代数。

最新更新