Mysql SQL:具有多个类别的产品
哪种数据库设计和性能最好,可以存储每个产品的多个类别(至少3个)?Products表可能有数百万个项目 要有两个表产品和产品关系(在哪里存储产品id和类别id) 那么,如何选择同时指定了类别1和类别2的产品呢Mysql SQL:具有多个类别的产品,mysql,database-design,Mysql,Database Design,哪种数据库设计和性能最好,可以存储每个产品的多个类别(至少3个)?Products表可能有数百万个项目 要有两个表产品和产品关系(在哪里存储产品id和类别id) 那么,如何选择同时指定了类别1和类别2的产品呢 SELECT IN()将选择1或2 每个产品的2个内部连接关系听起来不太好 您可以创建多对多关系。谷歌HABTM了解更多信息 产品 id name 类别 id name product_id category_id 产品类别 id name product_id category_
您可以创建多对多关系。谷歌HABTM了解更多信息 产品
id name
类别
id name
product_id category_id
产品类别
id name
product_id category_id
你的设计看起来不错。当您有一个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\u categories
,以指示您建立的关系