我正在创建一个可以从多个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万种产品。
此致 莱纳斯
答案 0 :(得分:1)
是的,这是典型的设计。我通常会调用您的基表类别,并调用此别名表categoryAlias。我对于verbage很挑剔,但raw_categories与“rawness”无关,它只是你想要使用的类别。
我建议的另一件事是,当你创建一个类别时,你也会创建一个categoryAlias。
考虑到这些类别中您将拥有的数据量,我可以提供的一个实用建议是,在创建类别时,还要为其创建categoryAlias行,并使用相同的名称。
这将使您的导入代码更容易,因为您只需要查询categoryAlias以确定某个类别是否已存在,或者是否存在别名。