元组关系计算

时间:2017-02-09 20:00:57

标签: database tuple-relational-calculus

考虑以下关系模式。

Students(rollno: integer, sname: string)
Courses(courseno: integer, cname: string)
Registration(rollno: integer, courseno: integer, percent: real)

对于以下查询:

{T ∣ ∃S∈Students,∃R∈Registration(
    S.rollno=R.rollno ∧ R.courseno=107 ∧ R.percent>90 ∧ T.sname=S.sname)}

是否可以检索到所有令人满意的元组,还是仅检索T.sname? (如果是这样,它会有区别吗?)

1 个答案:

答案 0 :(得分:0)

关系演算或代数表达式返回关系值。关系拥有多组元组。集合不包含重复项。

结果中的属性取决于您的特定版本的元组关系演算的定义方式。两种合理的可能性是:

  • 右侧表示名为T的元组值是根据给定关系定义的具有某些属性的某种关系的元素。

  • 我们将T命名为一个元组值,该元组值具有在右侧T.之后使用的属性。

(否则,任何时候只有属性T的名称sname的元组值满足右侧,每个其他元组都带有任何附加属性,无论任何值也满足右手。)

(元组关系演算的某些版本只给出了左边的属性名称。有些版本在左边给出了属性名称和值(在右边使用的元组名称方面)。有些版本给出了表单{左边是{1}},因此给出了属性名称和值。有些版本就像其中一个版本,但左边还有一个元组名R.a。)