2013-11-28 127 views
2

對於每個產品,存儲多個類別(至少3個)是否是最好的數據庫設計和性能?產品表可能有數以萬計的物品。SQL:具有多個類別的產品

有兩個表產品products_relationship(其中存儲的product_id和category_id的)?

那麼選擇已分配類別1和2的產品又如何?

  1. SELECT IN()將選擇1或2
  2. 2 INNER每products_relationship JOIN聲音`噸馬麗娟。

回答

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來指示你建立什麼關係。

0

您可以創建多對多的關係。谷歌HABTM更多

產品

id name 

類別

id name 

PRODUCT_CATEGORY

product_id category_id 
相關問題