我能明白你爲什麼要問這個有趣的問題。如果測試人員輸入關鍵字列表,並使用信息模式視圖獲取匹配列的列表,則存在大量錯誤匹配可能浪費時間或導致測試人員輸入錯誤信息的危險進入你的系統。您想知道如何確定哪些列與測試人員的查詢最匹配。但是你想保持簡單,因爲這只是一個臨時解決方法,它不是你的主要應用程序。
答案是使用基於聲譽的系統來補充搜索結果。這是一個非常簡單的應用程序應該很好地工作。
首先,創建兩個簡單表來存儲數據庫中表和列的評級信息。這是起始結構。
TEST_SEARCH_TABLES:
TABLE_ID
TABLE_NAME
RATING
TEST_SEARCH_COLUMNS:
COLUMN_ID
TABLE_ID
COLUMN_NAME
RATING
使用數據庫中每個表的名稱填充TEST_SEARCH_TABLES。用每個列的名稱填充TEST_SEARCH_COLUMNS,並將其鏈接到相應的表。將所有RATING列初始化爲1000.0 - 您將使用Elo Rating System來補充您的排名,因爲它很簡單,易於實施並且效果很好。
當用戶輸入關鍵字列表時,請勿使用信息架構視圖。而應在TEST_SEARCH_COLUMNS表中搜索包含任何這些關鍵字的列。根據點擊次數爲每列分配一個WEIGHT。 (例如,如果搜索是「客戶,金額,收入」,那麼CUSTOMER_ID列將具有權重1. CUSTOMER_INCOME列將具有權重2,並且CUSTOMER_INCOME_AMOUNT將具有權重3.)計算每個表作爲其列的權重的總和。
現在對於您的搜索返回的每個表格和列,將WEIGHT乘以RATING以確定SEARCH VALUE。按照搜索值的降序給測試人員提供匹配表的列表。在每個表中,還按照搜索值的降序列出列。
每次在搜索中出現表格或列時,請使用Elo評分系統對其評分爲1000.0的對手給予勝利。每當用戶選擇要使用的列時,請將該列和其表格與對手評分1500.0進行比較。通過這種方式,最有用和最成功的表格和列將隨着時間的推移有機地浮動到搜索列表的頂部。
該方法的一個好處是(使用表而不是信息模式視圖)是這種方法更具可擴展性。作爲增強功能,您可以將DESCRIPTION和COMMENTS列放在TEST_SEARCH_TABLES和TEST_SEARCH_COLUMNS表上,並且還可以在這些列中搜索關鍵字匹配。
這是另一個可選的增強功能 - 您可以在每個表格和列旁邊放置一個(+)和( - )按鈕,並且在用戶點擊(+)和損失如果用戶點擊( - ),則評級爲零的對手。這將允許您的測試人員投票選擇他們認爲重要的列,並投票反對總是阻礙的列。
你有一個奇怪的過程,我必須說 –
如果你定義什麼是「最合適」的意思,這將有所幫助。如果我輸入「foo」,是否要在列名稱或列數據中查找帶'foo'的列? – Pondlife
@ Dr.Dan我們的確做到了。這是暫時的:) –