2

タプルリレーショナル計算で量指定子が必要なのはなぜですか?
私がこの声明を持っているとしましょう:

{S.sname | Student の S および (Grade の G が存在する)(Ss# = Gs#)};

代わりにこれを使用できないのはなぜですか?

{S.sname | S が Student で G が Grade で、Ss# = Gs# };

4

1 に答える 1

2

クエリは同じ値を返します。G.gradeしかし、2 番目の例では生徒の を求めることもできますが、最初の例ではできません。Tuple Relational Calculus 式の右側は、左側の属性のみが保持される一連のタプルを記述します。ここで、右側の 2 つの式は異なるタプルのセットを記述していますが、左側の射影はたまたま両方から同じ値を残しています。

違い は、最初に記述されたリレーションは の属性のみを持ち、2 番目に記述されたリレーションは&の属性を持つことです。
r IN R AND EXISTS s IN S (etc)
r IN R AND s IN S ANDetc
RRS

T属性との関係...は、何らかの式が保持される行を保持するとしますT(...)。次に<...> IN T、場合に限りT(...)

次に、上記の 2 つの関係を (それぞれ) を満たすタプルとして説明できます。 この表記法 (多かれ少なかれ) はドメイン関係計算と呼ばれます。
R(...) AND EXISTSattributes in S & etc but not in R(S(...) ANDetc)
R(...) AND S(...) ANDetc

リレーションに対して次の演算子を定義するとします。
PROJECTsome attributes of TTEXISTSother attributes of TT(...)
T NATURAL JOIN UT(...) AND U(...)

次に、上記の 2 つの関係を (それぞれ) のタプルとして記述できます。 この表記法は関係代数と呼ばれます。
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 に答える