2

データベースコースの割り当てを行うだけで、関係代数に頭を正しく巻き付けていることを再確認したいと思います。

SQLクエリ:

SELECT dato, SUM(pris*antall) AS total
FROM produkt, ordre
WHERE ordre.varenr = produkt.varenr
GROUP BY dato
HAVING total >= 10000

関係代数:

σtotal >= 10000(
  ρR(dato, total)(
    σordre.varenr = produkt.varenr(
      datoℑSUM(pris*antall(produkt x ordre))))

これは正しい方法ですか?

4

1 に答える 1

2

知らない。そして、他の誰も知らないでしょう。

RAコースは通常、選択、射影、および結合演算子に限定されます。集合体は通常、RAコースの対象にはなりません。RAが集約を行う標準的なアプローチ(私が知っている)さえありません。

リレーションの集計を行うためにコースで定義する演算子は何ですか?その演算子はその結果に対してどのような種類の値を生成しますか?関係?他に何かありますか?他に何かある場合、これらの結果値は関係ではなく、制限は関係に対してのみ機能することを考えると、コースはその結果に対して関係制限を行うことをどのように説明しますか?

代数的に、このケースは自然結合(produkt x ordre)から始まります。

【結果】この自然結合は集計演算の対象となります。したがって、この自然結合は、集計演算子へのリレーショナル入力引数を指定する場所に表示されます。集計を指定するために必要なその他の仕様は、出力属性名(合計)とそれらを計算する方法(SUM(...))です。これらは、投影の属性リストや制限の制限条件のように、集計演算子シンボルの横の添え字に「注釈」として表示される場合があります。しかし、私が知る限り、集計に関する合意された標準表記法がないため、この演算子に関するものはすべてコース固有です。

次に、集計演算子がリレーションを返すように定義されている場合、条件「total>=10000」の制限への入力引数として集計結果を指定できます。

于 2012-09-16T16:45:05.713 に答える