2010-12-15 58 views
4

也許這是在黑暗中拍攝的照片,但我試圖找出是否有人對我們提出的這個問題有任何想法。基於Web的特定於域的查詢生成器(不適用於報告)的模式或想法?

情況是,我們有一個數據庫,其中包含有關大型項目列表的各種數據。有幾十個表都提供了關於項目的支持信息,無論是1對1的方式,其中一些特定類型的關於項目的信息(比如ProjectInfoTypeA)可能存儲在一個名爲ProjectInfoTypeA的表中,我們會做一個內部聯接在項目表和1到很多項目之間(比如ProjectScopeKeywords),項目可以分配N個屬性,或者在這種情況下爲多個不同的屬性/查找表分配「關鍵字」。

在我們需要在我們的web應用程序的用戶建立之類的東西到底: 顯示我的成本至少$ 1MM在過去的5年裏花了至少4年做完成的所有項目,並有與它關聯的所有這3個關鍵字(x,y,z)。

我們還希望用戶能夠保存他們的查詢,以便他們和其他用戶可以從保存的查詢列表中選擇它們。

一旦我們從他們的篩選器中獲得項目列表,我們需要以各種方式處理它:但不能作爲報告。如果這是一個報告,我只是給他們一些某種報告生成器,但我們需要在Web應用程序中使用他們的過濾列表。

目前我們正在考慮2個不同的想法: 1)因爲我們只是試圖編寫我們自己的UI來構建查詢,然後創建一些巨大的SQL語句。

2)我們將每個過濾器的數據存儲在數據庫中,然後當他們點擊「搜索」時,我們將通過反覆剝離與每個查詢不匹配的項目從本質上修剪項目列表,基於它們存儲在數據庫中的數據。

我猜測沒有人需要處理這樣的事情,但如果你們有任何人,我會有興趣聽到任何值得研究的建議/模式。

+0

我結束了查詢生成器。只是要清楚,我不希望任何類型的基於瀏覽器的數據庫查詢設計器像一些可用的選項。我希望用戶導航到許多不同的(可選)表單,從列表中選擇許多不同的選項/值/項目,並最終列出數據庫中符合其標準的所有項目。 – chrismay 2011-01-05 13:43:05

+0

我構建了一系列類,每個類都可以添加到集合中,每個類包含有關如何稍微修改查詢以包含連接表的信息,或者檢查多對多記錄的存在,或者簡單地編輯where子句。我很確定我們做對了。它似乎更簡單,它允許用戶使用「AND」和「OR」。 – chrismay 2011-01-05 13:46:16

回答

1

我會推薦選擇選項1.我對許多項目都使用了查詢生成器方法,這取決於需求的複雜程度,具有不同程度的複雜性。

如果你在使用一個現成的解決方案的位置,你可以在網上找到幾個:http://www.google.com/search?q=sql+query+builder

對於定製的解決方案,至少,你可能會想爲扁平的意見用戶從中查詢;這將簡化設計師的複雜性,減少用戶的學習曲線,並針對未來的模式變化提供一些抽象。

限定基礎數據源後,需要提供一種裝置,通過其用戶可以選擇特定的列,定義的過濾標準,指定值的聚集,並定義子查詢(基於您的示例查詢要求)。列選擇和過濾器定義不應該太困難,但是值聚合和子查詢創建將是非常容易定義的。您應該能夠使用現成的解決方案作爲如何向用戶展示此功能的示例。

0

以及1到很多,如可能ProjectScopeKeywords,其中項目可以分配N個屬性或在這種情況下,爲許多不同的屬性/查詢表的「關鍵字」。

你能更清楚地表明這是什麼意思嗎?