2011-11-18 37 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