グローバルスキーマのビューの定義¶
基本リレーションが定義され、対応するラッパーが作成されると、従来のデータベースでのビュー定義と同様の方法で、基本リレーションへのクエリによりグローバルスキーマの各リレーションが定義されます。
重要なのは、ビューを定義するときは、基本リレーションのほかに、これまで定義したビューも使用できることです。
例: 以下の 3 つの基本リレーションを例にします。
A と B は、インターネット上の 2 つの電子書店を表します。C は、ユーザーが本をレビューする際のソースを表し、システムでは特定の本の平均レビューを検索することができます。グローバルスキーマのリレーションを取得する場合を考えてみましょう。
R = {TITLE, AUTHOR, PRICE, AVERAGE_RELEVANCE}
このリレーションには、 A
と B
のすべての本とともに、両ソースで見つかった本について、 C
による平均レビューと PRICE
属性の最小値が含まれるものとします。 R
は次の 2 つのステップで定義できます。
ビュー
bookview
を A と B の和集合 (union) として作成します。
CREATE VIEW bookview AS
SELECT * FROM A
UNION
SELECT * FROM B;
ビュー
R
をbookview
とC
の結合 (join) として作成し、GROUP BY
演算子を適用して本ごとの最小価格を取得します。
CREATE VIEW R AS
SELECT bookview.TITLE
, bookview.AUTHOR
, AVERAGE_RELEVANCE,
MIN(PRICE) AS MINIMUM
FROM
bookview JOIN C
ON bookview.TITLE = C.TITLE
AND bookview.AUTHOR = C.AUTHOR
GROUP BY bookview.TITLE, bookview.AUTHOR, AVERAGE_RELEVANCE;
前述のように、基本ビューでは、検索メソッドを使用して記述されるクエリの機能に制限がある場合があります。ビューを作成する場合、Virtual DataPort は、基本リレーションのビューおよびビュー定義に使用されるステートメントから、ビューの検索メソッドを自動的に算出できます。そのため、システムは特定のクエリに応答できるかどうかを 事前に 確認することができます。
後処理¶
ソースのクエリ機能について検討するときには、Virtual DataPort サーバーが前述のソースから取得した結果に対して後処理を実行できることを念頭に置いておくことも大切です。ソースのクエリ機能の制約に対処するため、後処理を適用して、クエリ機能のリストを同様の機能のスーパーセットとして取得することができます。このタスクはサーバーにより自動的に実行されます。