构建我的数据库

时间:2011-11-18 21:35:17

标签: ruby-on-rails database

我正在创建一个可以从多个XML Feed导入产品的应用。在XML中,指定了一个类别,例如T-Shirt。问题是不同的经销商以不同方式指定类别。例如,一个经销商称之为“T-Shirts”的另一个可称为“T-Shirt”,第三个是“短袖衬衫”等等。

我想以某种方式将这些类别映射到我自己的类别。所以我需要一些关于如何构建数据库的技巧。

我的想法是创建一个“raw_categories”表,其中包含代理商类别的名称和“category_id”,它与我自己的“类别”表具有belongs_to关系。然后当我导入时,我只是尝试找到一个具有匹配名称的raw_category,如果有的话,选择它,否则添加一个新的。这个新的我可以手动关联到我自己的一个类别。

你明白我的意思吗,这是一个好方法吗?是否有更好/更有效的方式?

如果这是个好主意。我如何在Rails中做到这一点?我应该使用这样的东西(我想我在API文档中看到过这样的东西):

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

我估计数据库中会有大约4万到10万种产品。

此致 莱纳斯

1 个答案:

答案 0 :(得分:1)

是的,这是典型的设计。我通常会调用您的基表类别,并调用此别名表categoryAlias。我对于verbage很挑剔,但raw_categories与“rawness”无关,它只是你想要使用的类别。

我建议的另一件事是,当你创建一个类别时,你也会创建一个categoryAlias。

考虑到这些类别中您将拥有的数据量,我可以提供的一个实用建议是,在创建类别时,还要为其创建categoryAlias行,并使用相同的名称。

这将使您的导入代码更容易,因为您只需要查询categoryAlias以确定某个类别是否已存在,或者是否存在别名。