2011-11-18 68 views
0

我正在創建一個應用程序,該應用程序將從多個XML源導入產品。在XML中有一個指定的類別,例如T恤。問題在於不同的經銷商以不同的方式指定類別。例如,一個經銷商稱爲「T恤」的另一個可能稱爲「T恤」,第三個「短袖襯衫」等。構建我的數據庫

我想以某種方式將這些類別映射到我自己的類別。所以我需要一些關於如何構建我的數據庫的提示。

我的想法是創建一個「raw_categories」表,其中包含經銷商類別的名稱和與我自己的「類別」表具有belongs_to關係的「category_id」。然後,當我導入時,我只是嘗試找到一個名稱匹配的raw_category,如果有,選擇它,否則添加一個新的。這個新的我可以手動關聯到我自己的類別之一。

你明白我的意思嗎?這是一個好方法嗎?有更好/更有效的方法嗎?

如果這是一個好主意。我如何在Rails中做到這一點?我應該使用這樣的事情(我想我已經看到了在API文檔是這樣):

# products model 
has_one :category, :through => :raw_categories 

我估計將有大約40K到100K的產品在數據庫中。

問候 萊納斯

回答

1

是的,這是典型的設計。我通常會調用你的基表類別,並調用這個別名表categoryAlias。我對verbage很挑剔,但raw_categories與「粗糙」無關,它只是你想要使用的類別。

我建議的另一件事是,當你創建一個類別,你也創建一個categoryAlias。

考慮到您在這些類別中的數據量,我可以提供的一個實際建議是,當您創建一個類別時,還可以爲它創建一個categoryAlias行,並使用相同的名稱。

這將使您的導入代碼更容易,因爲您只需要查詢categoryAlias以確定某個類別是否已經存在,或者是否存在別名。

+0

謝謝你的回答。現在讓我們稱它們爲resellerCategories和類別。在這裏更容易區分它們。經銷商分類是我從分銷商那裏得到的,分類是我將在我自己的網站上展示的分類。我的另一個想法是隻使用resellerCategories作爲查找表,然後將產品直接關聯到適當的類別。也許這會更有效率?這樣resellerCategories將只在導入時才使用,而不是在瀏覽網站時使用。 – Linus

+0

是的,這正是我所建議的--resellerCategories等同於我描述的categoryAlias表。 – gview