每个产品存储多个类别(至少3个)的最佳数据库设计和性能是什么?产品表可能有数百万件物品。
要有两个表产品和 products_relationship (存储product_id和category_id的位置)?
那么选择同时分配了1类和2类的产品呢?
答案 0 :(得分:1)
你的设计很好看。当你有 m到n关系时,你应该总是使用这样的映射表。
您可以选择包含这两个类别的产品
select p.id, p.name
from products p
inner join product_relationship pr on p.id = pr.product_id
inner join categories c on c.id = pr.category_id
where c.name in ('cat1','cat2')
group by p.id, p.name
having count(distinct c.id) = 2
您可以将映射表命名为不同:product_categories
以指示您构建的关系。
答案 1 :(得分:0)
您可以创建多对多的关系。 Google HABTM 了解更多
<强>产品强>
id name
<强>类别强>
id name
<强> PRODUCT_CATEGORY 强>
product_id category_id