
クエリ・バイ・サンプル(QBE)は、リレーショナルデータベース用のデータベースクエリ言語です。
Query by Exampleは、1970 年代半ばにIBM ResearchのMoshé M. ZloofによってSQLの開発と並行して考案され[ 1 ] 、 Edgar Coddのリレーショナル データベースに関する研究に影響を受けています[ 2 ]。これは、ユーザーがコマンド、例となる要素、条件を入力するビジュアル テーブルを使用する最初のグラフィカル クエリ 言語です。今日では、多くのデータベースのグラフィカル フロントエンドが QBE のアイデアを使用しています。当初はデータの取得のみに限定されていましたが、後に挿入、削除、更新などの他の操作や一時テーブルの作成も可能にするように拡張されました。
QBEの背後にある動機は、パーサーがユーザーの操作をSQLなどのデータベース操作言語で表現されたステートメントに変換できるという点にあります。舞台裏では、実際に実行されるのはこのステートメントです。適切に包括的なフロントエンドがあれば、ユーザーがSQLの細かい部分を記憶する負担を最小限に抑えることができ、エンドユーザー(そしてプログラマーでさえも)は、テーブルや列の名前を入力するよりも選択する方が簡単で生産的になります。
情報検索の文脈では、QBEはやや異なる意味を持ちます。ユーザーは1つまたは複数の文書を送信し、文書データベースから「類似」文書を取得するように要求できます[複数の例による検索[ 3 ]を参照]。類似性検索は、文書ベクトルの比較に基づいています(ベクトル空間モデルを参照)。
QBEはエンドユーザー開発における先駆的な研究であり、この分野の初期の例として研究論文で頻繁に引用されている。
現在、QBEは、 Microsoft Access(「Visual Query by Example」を実装)やMicrosoft SQL Server Enterprise Managerなど、いくつかのリレーショナルデータベースのフロントエンドでサポートされています。また、いくつかのオブジェクト指向データベース( db4o [ 4 ]など)にも実装されています。
QBEはTableauクエリと呼ばれる論理形式に基づいていますが、SQLが関係代数に基づいているのと同様に、QBEはそれにいくつかの拡張機能を追加しています。
ここでは、QBEの仕組みを説明するために、サプライヤーおよび部品データベースを使用した例を示します。
この用語は、Zloofの研究に影響を受けた一般的な手法も指しており、検索値を持つ項目のみを使用して結果を「フィルタリング」します。これにより、ソフトウェアのユーザーはクエリ言語(SQLなど)を知らなくてもクエリを実行できます。ソフトウェアは、ユーザーのためにクエリを自動的に生成できます(通常はバックグラウンドで)。以下に、名前、住所、都市、州、郵便番号というテキスト(文字)列を持つ連絡先テーブルに基づいた2つの例を示します。
お問い合わせフォーム - 例A: 名前:ボブ ..住所: .....市: 州: TX ..郵便番号:
結果として得られるSQL:
SELECT * FROM Contacts WHERE Name = 'Bob' AND State = 'TX' ;空欄の項目はSQL句を生成しないことに注意してください。「住所」は空欄なので、それに対応する句は生成されません。
お問い合わせフォーム - 例B : .....名前: ..住所: 都市:サンプルトン ....州: 郵便番号: 12345
結果として得られるSQL:
SELECT * FROM Contacts WHERE City = 'Sampleton' AND Zipcode = '12345' ;QBEのより高度なバージョンには、プルダウンメニューから選択できる「含む」、「含まない」、「で始まる」、「より大きい」など、その他の比較演算子オプションが用意されています。
テキスト比較の別の方法として、1つ以上のワイルドカード文字を許可する方法があります。たとえば、特定のシステムでアスタリスクがワイルドカード文字として指定されている場合、「Rob *」を使用して姓を検索すると、「Rob」、「Robert」、「Robertson」、「Roberto」などの姓が返されます(一致します)。
お問い合わせフォーム - 例C : 名前:ロブ* ..住所: .....市: ....州: ..郵便番号:
結果として得られるSQL:
SELECT * FROM Contacts WHERE Name LIKE 'Rob%'標準SQLでは、パーセント記号はLIKE句においてワイルドカードのように機能します。この場合、クエリバイサンプル方式のフォーム処理ソフトウェアはアスタリスクをパーセント記号に変換します。(アスタリスクはSQL以外の分野ではより一般的なワイルドカードの表記法であるため、ここではフォームがよりユーザーフレンドリーになるように配慮しています。)
警告:クエリ実行型ソフトウェアは、SQLインジェクション攻撃を回避するよう注意する必要があります。そうしないと、悪意のあるユーザーが、クエリフォームの作成者が意図した以上にデータベースに侵入する可能性があります。
Visual Query System (VQS)