タプルリレーショナル計算で量指定子が必要なのはなぜですか?
私がこの声明を持っているとしましょう:
{S.sname | Student の S および (Grade の G が存在する)(Ss# = Gs#)};
代わりにこれを使用できないのはなぜですか?
{S.sname | S が Student で G が Grade で、Ss# = Gs# };
タプルリレーショナル計算で量指定子が必要なのはなぜですか?
私がこの声明を持っているとしましょう:
{S.sname | Student の S および (Grade の G が存在する)(Ss# = Gs#)};
代わりにこれを使用できないのはなぜですか?
{S.sname | S が Student で G が Grade で、Ss# = Gs# };
クエリは同じ値を返します。G.grade
しかし、2 番目の例では生徒の を求めることもできますが、最初の例ではできません。Tuple Relational Calculus 式の右側は、左側の属性のみが保持される一連のタプルを記述します。ここで、右側の 2 つの式は異なるタプルのセットを記述していますが、左側の射影はたまたま両方から同じ値を残しています。
違い
は、最初に記述されたリレーションは の属性のみを持ち、2 番目に記述されたリレーションは&の属性を持つことです。
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(...)
。
次に、上記の 2 つの関係を (それぞれ) を満たすタプルとして説明できます。
この表記法 (多かれ少なかれ) はドメイン関係計算と呼ばれます。
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(...)
次に、上記の 2 つの関係を (それぞれ) のタプルとして記述できます。
この表記法は関係代数と呼ばれます。
R NATURAL JOIN PROJECT
attributes in S & etc also in R
(S NATURAL JOIN
etc
)
R NATURAL JOIN S NATURAL JOIN
etc