對於每個產品,存儲多個類別(至少3個)是否是最好的數據庫設計和性能?產品表可能有數以萬計的物品。SQL:具有多個類別的產品
有兩個表產品和products_relationship(其中存儲的product_id和category_id的)?
那麼選擇已分配類別1和2的產品又如何?
- SELECT IN()將選擇1或2
- 2 INNER每products_relationship JOIN聲音`噸馬麗娟。
對於每個產品,存儲多個類別(至少3個)是否是最好的數據庫設計和性能?產品表可能有數以萬計的物品。SQL:具有多個類別的產品
有兩個表產品和products_relationship(其中存儲的product_id和category_id的)?
那麼選擇已分配類別1和2的產品又如何?
您的設計看起來不錯。當你有一個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
來指示你建立什麼關係。
您可以創建多對多的關係。谷歌HABTM更多
產品
id name
類別
id name
PRODUCT_CATEGORY
product_id category_id