web-dev-qa-db-ja.com

複雑なユーザーインターフェイス要素の目的をより明確にするにはどうすればよいですか?

私は、データベースの問題をテストおよび共有するためのオンライン環境である SQL Fiddle の作成者です。私のサイトの対象読者は、かなり技術的に洗練されたユーザー(基本的にデータベースプログラマー)です。しかし、私が最近実装した機能の1つが混乱の元になっているため、コンセプト全体をより明確にする方法がわかりません。

この特定の問題の完全な例については、このStackOverflow回答を参照してください。

なぜ5つの合計1 = 4

私がそこで述べたように、問題は、左側のパネルでクエリを実行すると、2つの競合する機能が動作することです。 1つの機能は、実行された個々のステートメントの分割です。これにより、以下のセクションの各ステートメントから結果をフェッチして表示できます。もう1つの機能は、「バッチ」としてステートメントを一緒に実行する必要がある場合があるため、変数(上記の例のように)などが一緒に実行されます。

両方の機能に対応する現在の解決策は、「クエリターミネーター」を変更することです。これは、クエリバッチの終了を定義するために使用される特殊文字(または文字の組み合わせ)です。ドロップダウンボタンから選択することで、使用するクエリターミネーターをユーザーが指定できるようにします( サイト の[;]ボタンを参照)。これは機能しますが、このボタンを使用してクエリ実行の動作を変更する方法を理解している人はほとんどいないようです。

このボタンは私が作成した方法で作成しました。操作するための大量の画面スペースがなかったため、これはあまり必要とされない機能です。ただし、これをどのように使用するかを明らかにするために、さらに多くのことを行う必要があることは明らかです。私の非常に賢いユーザーは、この関数が解決することを目的としたエラーメッセージや奇妙な動作に困惑しています。

私が考えたいくつかのこと:

  • 各結果セットに対して実行されている実際のクエリステートメントを表示できます。これにより、それぞれを生成するために正確に何が使用されたかが明確になり、ユーザーが問題をクエリ終了の1つとして認識するようになります。

  • 私はこの機能(およびその他)をカバーするFAQ /ヘルプセクションを書くことができますが、現在、このようなものは本当になく、ヘルプマニュアルを読んでも理解できないほど十分に直感的なメカニズムを見つけたいと思います必要です。

  • これを簡単に説明しようとするボタンにカーソルを合わせると表示されるbootstrapツールチップを使用できます。

11
Jake Feasel

他の2つのアプローチが役立つと思います:

入力時に、クエリ区切り文字の右側のステータス領域で、最初の区切り文字を入力してから「Xクエリ」を入力すると、「2クエリ」を表示できます。ステータスが[;]ボタンに何らかの形で付加されていれば、このボタンによってコードのセグメント化方法が変わることをユーザーに伝えるのに役立ちます

2つ目は「TASK_PERFORMED」ではなく結果領域にあり、「最後のクエリ結果(前のXクエリの結果を表示)」を印刷します。括弧内のテキストは、各結果を表示するモードに切り替えるボタンです(そして各関連クエリ)

2
Mathieu

あなたの用語「Query Terminator」は、MySQL DELIMITERコマンドと機能的に同等であるようです(これは、ほとんどの場合、指定した理由 ストアドプロシージャを記述する場合 )のために正確に使用されます)。

最初に頭に浮かぶのは、これを「区切り文字」と呼ぶことです。これは既知の用語であり、高度なSQLの大部分をキャプチャする必要があるためです。 -読み書きのできる聴衆。 「クエリターミネータ」がまったく誤解を招くとは思いませんが、SQLのコンテキストではunexpectedの可能性があります。

さらに、ボタンは何もdoしないようです(少なくともコードが実行されるまで)。 underlyingDELIMITERコマンドを実行するという私の推論から、挿入についてどう思いますかa DELIMITER xカーソル位置でコードペイン自体にペアリングするか、選択したテキストをラップしますか? 1回のクリックで、ほとんどのSQLリテラルユーザーはボタンの機能を理解できると思います。

1
msanford