2013-11-28 4 views
2

Какой лучший дизайн и производительность базы данных для хранения нескольких категорий (не менее 3) на продукт? Таблица продуктов может иметь количество предметов.SQL: продукт с несколькими категориями

Чтобы иметь две таблицы продукты и products_relationship (где хранить product_id и category_id)?

А как насчет выбора продуктов, которые присвоили категории 1 и 2?

  1. SELECT, IN() будет выбрать 1 или 2
  2. 2 INNER JOIN в products_relationship Безразлично `звуковой Greate.

ответ

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

Вы можете создать много разных отношений. Google HABTM для более

Продукт

id name 

категории

id name 

PRODUCT_CATEGORY

product_id category_id 
Смежные вопросы