「例示による問い合わせ」の版間の差分
編集の要約なし |
|||
61行目: | 61行目: | ||
生成されるSQL文: |
生成されるSQL文: |
||
< |
<syntaxhighlight lang="sql"> |
||
SELECT * FROM 部品 WHERE 部品名='シリンダケース' AND 貯蔵場所='山形市' |
SELECT * FROM 部品 WHERE 部品名='シリンダケース' AND 貯蔵場所='山形市' |
||
</syntaxhighlight> |
|||
</source> |
|||
空の項目がSQL文の句としては生成されていないことに注意。 |
空の項目がSQL文の句としては生成されていないことに注意。 |
||
90行目: | 90行目: | ||
生成されるSQL文: |
生成されるSQL文: |
||
< |
<syntaxhighlight lang="sql"> |
||
SELECT * FROM 部品 WHERE 部品名='ピストン' AND 重量=80 |
SELECT * FROM 部品 WHERE 部品名='ピストン' AND 重量=80 |
||
</syntaxhighlight> |
|||
</source> |
|||
QBEのより先進的なバージョンは、「~を含む」「~から始まる」「~より大きい」など他の比較演算子オプションをサポートする。 |
QBEのより先進的なバージョンは、「~を含む」「~から始まる」「~より大きい」など他の比較演算子オプションをサポートする。 |
2020年7月5日 (日) 23:04時点における版
例示による問い合わせ (れいじによるといあわせ、QBE、英: Query by Example) は、関係データベース (リレーショナルデータベース) 向けの問い合わせ言語の一つである。 QBEは、1970年代半ばにアメリカ合衆国ニューヨーク州ヨークタウンのIBM研究センターで、別の問い合わせ言語SQLの開発と並行して、モシェ・ズルーフが考案した[1]。 QBEは、最初の視覚的な問い合わせ言語である。 QBEでは関係の視覚的表現として表を使い、利用者は表に対して命令、例示、および条件を入力する。 現在、データベース向けの多くの視覚的なフロントエンドは、QBEを源流とする創意工夫を採用している。 QBEはもともとは、機能をデータ検索のみに限定していた。 しかし後に挿入、削除、および更新、さらに一時表の生成など、検索以外のデータ操作もできるように拡張された。
QBEが開発された背景には、利用者の操作をSQLなどのデータ操作言語 (DML) の文にソフトウェアで変換したいという事情があった。 QBEの舞台裏では、こうして変換されたDML文が実行されている。 QBEを採用した良質で包括的な視覚的フロントエンドを使うことにより、利用者はSQLなどの非視覚的なDMLの詳細を思い出す負担を、最小化することができる。 また、表と列を視覚的に選択するという操作は、非視覚的なDDLで表や列の名称を入力するよりも、利用者にとって (および場合によってはプログラマにとってさえ) 、より操作が簡単で生産性が高い。
情報検索の文脈では、QBEはまた別の意味をもつ。 QBEを採用した文書データベースの利用者は、文書を登録し、「類似した」文書を検索することができる。 類似性検索は、文書ベクトル比較に基づいている (ベクトル空間モデルを参照) 。
QBEの開発は、エンドユーザ開発 (EUD) において強く影響を及ぼした業績であり、エンドユーザ開発の初期の例として研究論文で頻繁に引用されている。
現在QBEは、いくつかの関係データベース管理システム (RDBMS) のフロントエンドでサポートされている。 Paradox、Microsoft Access では、QBEをサポートしている。 QBEはまた、いくつかのオブジェクトデータベース管理システム (ODBMS) でも実装されている (例: db4o[2])。
例
納入業者と部品のデータベースを扱う簡単な例を下記に示し、QBEがどのようなものかを図示する。
納入業者番号 | 納入業者名 | 状況 | 所在地 |
---|---|---|---|
仙台重工業株式会社 | 仙台市 |
一般的な技法として
QBEという語はまた、ズルーフの業績から影響を受けた一般的な技法をさす意味でも使われる。 この意味でのQBEは、検索値をもつ項目のみがデータを「フィルタ」して結果を返す技法である。 この技法は、問い合わせ言語 (SQLなど) についての知識を必要とせずに、ソフトウェア利用者が問い合わせ (クエリ) を実行する方法を提供する。 QBEを備えたソフトウェアは、自動的に利用者のための問い合わせ言語の文を (多くの場合は舞台裏で) 生成することができる。 例を示す。
部品番号 | |
---|---|
部品名 | シリンダケース |
色 | |
重量 | |
貯蔵場所 | 山形市 |
生成されるSQL文:
SELECT * FROM 部品 WHERE 部品名='シリンダケース' AND 貯蔵場所='山形市'
空の項目がSQL文の句としては生成されていないことに注意。 例えば「重量」は空であるため、「重量」に関わるSQL句は存在しない。
もう一つ例を示す。
部品番号 | |
---|---|
部品名 | ピストン |
色 | |
重量 | 80 |
貯蔵場所 |
生成されるSQL文:
SELECT * FROM 部品 WHERE 部品名='ピストン' AND 重量=80
QBEのより先進的なバージョンは、「~を含む」「~から始まる」「~より大きい」など他の比較演算子オプションをサポートする。 そのようなQBEのバージョンは、多くの場合は比較演算子オプションを選択するためのプルダウンメニューを提供する。
脚注
- ^ Zloof, M. M., Query-by-Example: A data base language
- ^ db4oでのQBE: 多忙な Java 開発者のための db4o ガイド: クエリー、更新、そして ID - IBM develperWorks
参考文献
- M. Zloof. Query by Example. AFIPS, 44, 1975.
- Raghu Ramakrishnan, Johannes Gehrke. Database Management Systems 3rd edition. Chapter 6.
- Date, C.J. (2004). “8 Relational Calculus”. In Maite Suarez-Rivas; Katherine Harutunian. An Introduction to Database Systems. Pearson Education Inc.. ISBN 0-321-18956-6
出典
- Oracle Definitions: http://searchoracle.techtarget.com/sDefinition/0,,sid41_gci214554,00.html
- http://www.cs.sfu.ca/CC/354/zaiane/material/notes/Chapter5/node2.html
- http://www.cs.wisc.edu/~dbbook/openAccess/thirdEdition/qbe.pdf