2

このSQLクエリの関係代数を作成するにはどうすればよいですか?

Select patient.name, 
       patient.ward, 
       medicine.name, 
       prescription.quantity, 
       prescription.frequency
From patient, medicine, prescription
Where prescription.frequency = "3perday" 
  AND prescription.end-date="08-06-2010" 
  AND canceled = "Y"

関係...

処方

  • 処方箋-ref
  • 患者参照
  • 医学-ref
  • 周波数
  • 終了日
  • キャンセル(Y / N))

  • 医学-ref
  • 名前

忍耐強い

  • 患者参照
  • 名前
4

2 に答える 2

3

使用する必要がある演算子を指摘します

射影 (π)

π(a1,...,an): 結果は、R のすべてのタプルが集合 {a1,...,an} に制限されたときに得られる集合として定義されます。

たとえば、患者テーブルの π(name) は、SELECT name FROM patientと同じになります。

選択 (σ)

σ( condition ):条件が成立する R 内のすべてのタプルを選択します。

たとえば、処方表の σ(frequency = "1perweek") は、SELECT * FROM instruction WHERE frequency = "1perweek"と同じになります。

外積(X)

RXS: 結果は R と S の間の外積です。

たとえば、患者 X の処方箋は SELECT * FROM患者、処方箋となります

これらのオペランドを組み合わせて演習を解くことができます。問題がある場合は、試行を投稿してみてください。

:結合がないため、自然結合は含めませんでした。この演習では、外積で十分です。

于 2010-06-20T23:08:47.363 に答える
3

例は次のようなものです。これは、患者、薬、処方箋の間の結合を誤って省略した場合にのみ発生します。そうでない場合は、Lombo が述べたように、クロス積 (この場合は悪い考えのように思えます...) を探します。「???」とマークされたテーブルに適合する結合の例を示しました。役立つテーブルのレイアウトを含めることができれば。

また、キャンセルは前置されていないため、処方箋によるものと想定しています。

編集: 標準の RA 形式で必要な場合は、図から簡単に取得できます。

代替テキスト http://img532.imageshack.us/img532/8589/diagram1b.jpg

于 2010-06-20T23:11:01.627 に答える