2009-01-09 29 views
0

使用案例:用戶1個上傳100名公司的名稱(如微軟,銀行塞拉利昂)如何規範化大型的用戶生成的公司名稱數據集?

用戶2個上傳100名公司的名稱(如缺口,UserVoice的,微軟公司)

我想用戶1的概念的微軟和用戶2的微軟的概念,以映射到一個集中維護的實體和微軟的唯一索引。

如果有人上傳不在中央存儲庫中的名稱,我想我希望按原樣輸入名稱。但是,如果第一個條目拼寫錯誤(例如Vergin Mobile而不是Virgin Mobile?)會發生什麼情況?我們如何才能最好地糾正它,並將新的上傳與相同的索引關聯起來?

從技術上講,中央資源庫應該是一個單獨的數據庫嗎?即使用戶生成的信息也應該放在一個獨立的數據庫中,也不應該出現在針對它的商業交易中?

從問題的一個大定義開始,希望能夠將它與您的輸入進行比較,謝謝。

+0

這聽起來像所有你真的想在這裏是一個拼寫檢查器。 – 2009-01-09 19:37:53

+1

好吧,除了拼寫檢查以外,還有一些考慮因素。例如,有些人可能會寫「空白」而不是「空白」或什麼。一個想法是查看以前的回覆,並查看任何類似的回覆,如果用戶輸入「Vergin Mobile」,請問「您的意思是Virgin Mobile」。 – 2009-01-09 19:39:55

回答

-1
company table  
    id 
    name 

company_synonym table 
    company_id 
    name 

此模式結構可解決您列出的問題。

1

您是否看到當您嘗試在此網站上輸入新問題時會發生什麼?所有以前的問題可能都是一樣的?

可能即使這樣也不夠。這裏不夠。

3

FWIW,這與database normalization無關。這是一個數據清理任務。

在一般情況下,數據清理不能完全自動化。很多人都在嘗試,但是不可能檢測到輸入數據可能存在錯誤的所有方式。您可以使用以下技術自動執行某些百分比的案例:

  • 強制用戶從列表中選擇公司名稱而不是鍵入它們。當然,這對於單個條目來說是最好的,而不是批量上傳。
  • 將輸入公司名稱的SOUNDEX與已存在於數據庫中的公司名稱的SOUNDEX進行比較。這對於識別可能的匹配很有用,但它也可能導致誤報。所以你需要一個人來審查它們。

最終,您需要設計自己的軟件,以便管理員輕鬆地「合併」條目(並更新其他數據庫表中的所有引用),因爲它們被發現是相互重複的。有沒有優雅的方式來使用級聯外鍵來實現這一點,你只需要編寫一堆UPDATE語句。

0

鏈接在某種程度上。但是,他們不會做批量上傳... 基本上你想設置某種差異計算器,這將導致對某些潛在匹配的操作。

像 「公司」滴即,「該」等是一個規則,然後有圖案匹配或接近匹配被拼錯的單詞。

從工作流的角度來看,批量上傳並不是一件容易的事情。您將需要一個已被批准的已知數據字典,然後每個上傳/添加都必須經過審覈。最終增加的數量將會減少。

我同意這不是數據庫問題 - 這是一個工作流程問題。

編輯

我會批准的列表,然後一些規則,傳播潛在的「好」的名字到允許列表中。你如何實現這一點,作爲讀者的練習...

2

有一個稱爲主數據管理系統的整體類型嘗試做這個不同的領域,如合作伙伴,地址,產品。通常是大型的,功能全面的系統,沒有什麼能夠以專門的方式正確完成。這些東西聽起來很容易,但很快就會變得非常困難。

,對不起,我不是太愉快的這裏,但是這可能很快變成一場噩夢..類似於試圖解決一個NP完全問題...

相關問題