2010-12-15 10 views
4

は多分これはここに暗闇の中でショットですが、私は、誰もが我々が提示されているこの問題についての考えを持っているかどうかを確認しようとしています。ウェブベースのドメイン固有のクエリービルダーのパターンやアイデア(報告用ではない)?

状況は、我々は、プロジェクトの大規模なリストに関するすべての種類のデータを含むデータベースを持っているということです。数多くのテーブルがあり、プロジェクトに関するサポート情報を1対1の方法で提供しています。ProjectInfoTypeAという名前のテーブルにプロジェクトに関する特定の情報(ProjectInfoTypeAなど)が格納されている場合があります。プロジェクトテーブルにはN個の属性を割り当てることができ、この場合はいくつかの属性/ルックアップテーブルに対して「キーワード」を割り当てることができるProjectScopeKeywordsのように、1対多のものがあります。

最終的に私たちのWebアプリケーションのユーザーには次のようなものを構築させる必要があります。 過去5年間で完了したすべてのプロジェクトを、少なくとも4年間はかかっており、これらのキーワードのうち3つ(x、y、z)はすべてそれに関連付けられています。

ユーザーは、クエリを保存して、自分や他のユーザーが保存されたクエリの一覧からそのクエリを選択できるようにする必要があります。

フィルタからプロジェクトのリストを取得したら、それをさまざまな方法で処理する必要がありますが、レポートとしては使用できません。これがレポートの場合は、何らかのレポートビルダーを提供するだけですが、Webアプリケーションでフィルタリングされたリストを操作する必要があります。

現在、私たちは2つの異なるアイデアを考えています: 1)クエリを構築するための独自のUIを作成してから、巨大なSQL文を作成しようとしています。

2)それぞれのフィルタに関するデータをデータベースに格納し、「検索」を滑らせると、各クエリに一致しなかったプロジェクトを繰り返し削除してプロジェクトのリストをプルーニングし、データベースに格納されているデータに基づいて実行されます。

私はこのようなことに対処しなければならないとは思っていませんが、もしあなたがいたら、私は調べる価値のある提案/パターンを聞くことに興味があります。

+0

私は質問ビルダーに行きました。ただ明確にするために、利用可能なオプションのいくつかのようなブラウザベースのデータベースクエリデザイナーは欲しかった。私は、ユーザがリストから多くの異なるオプション/値/アイテムを選択して、いくつかの異なる(オプションの)フォームにナビゲートし、最終的にその条件を満たすデータベース内のすべてのアイテムのリストを作りたがっていました。 – chrismay

+0

私は、それぞれのクラスが結合されたテーブルを含むようにわずかにクエリを変更する方法や、多対多レコードの存在をチェックする方法に関する情報を含むコレクションにそれぞれ追加できる一連のクラスを構築しました。 where節。私たちが正しいことをしたと確信しています。よりシンプルに見え、ユーザーは「AND」と「OR」を使用できます。 – chrismay

答えて

1

オプション1を選択することをお勧めします。要件の複雑さに応じてさまざまな高度化を行って、多くのプロジェクトでクエリビルダーアプローチを使用しました。

あなたは既製のソリューションを使用する立場にある場合は、あなたがウェブ上でいくつか見つけることができます:カスタム構築されたソリューションについてはhttp://www.google.com/search?q=sql+query+builder

を、最低でも、あなたはおそらくのために平坦化されたビューを提供したいと思いますユーザーは照会する。これにより、設計者の複雑さが簡素化され、ユーザーの学習時間が短縮され、将来のスキーマ変更に対する抽象概念が提供されます。

基本データソースを定義したら、ユーザーが特定の列を選択し、フィルタ条件を定義し、値の集計を指定し、(クエリの要件の例に基づいて)サブクエリを定義できる手段を提供する必要があります。列の選択とフィルタの定義はそれほど困難ではありませんが、値の集約とサブクエリの作成は定義するのが簡単ではありません。この機能をユーザーに提示する方法の例として、既製のソリューションを使用できるはずです。

0

と同様に、ProjectScopeKeywordsのように、1つのプロジェクトにN個の属性を割り当てることができます。この場合は、さまざまな属性/ルックアップテーブルに対して「キーワード」を割り当てることができます。

あなたはそれが何を意味するのかをもう少し明示することはできますか?

関連する問題