我正在创建一个可以列出商家的应用,我还想添加一个工具,用于指定他们导出的国家/地区。因此,当用户搜索其所在国家/地区的商家列表时,他们不仅会看到位于其所在国家/地区的商家,还会查看其他国家/地区可能将其服务导出到其所在国家/地区的商家。
到目前为止,这是我的想法 - 任何更好的解决方案?我正在使用Rails 3.2和Postgres。
然后,当我显示某个国家/地区的商家信息时,我可以在country_export数组中搜索也具有该国家/地区ID的商家。
但这是最有效的方法吗? (我会使用postgres_ext gem来启用pg数组支持:https://github.com/dockyard/postgres_ext)
我能想到的另一个选项是清单模型上的复选框,因此企业可以说它们是在全球范围内出口到欧盟,还是出口到亚洲等。然后在乡村模型上添加这些选项作为布尔字段。这方面的缺点是它不会像具体说明这些国家那样准确......但如果它是一种更有效的方式,我不介意妥协。
答案 0 :(得分:1)
这是两个表company
和country
之间的经典 n:m关系,通常由表格(如company_country
)引用这些表的两个主键。
请参阅这些密切相关的问题下的完整代码示例:
How to implement a many-to-many relationship in PostgreSQL?
Many-to-many relation filter
对于某个国家/地区的公司列表,您的查询将是:
SELECT c.*
FROM company_country cc
JOIN company c USING (company_id)
WHERE cc.country_id = ?
关系数据库基础知识,SQL基础知识。使用适当的索引,这比处理数组要快 。