Как принято реализовывать категории производитедей с количеством товара?
Нужно вывести производителей в категории (напр. холодильник) для фильтрации товара в интернет магазине., в списке категорий должен быть производитель , и количество товара в данной категории, с данным производителем.
Как сделать вывод производителей в список для фильтра, с количеством товара?
Направшивается : только две таблицы, первая с производителями, вторая с идентификатором категории (холодильники, спорттовары.. ) и идентификатором прозводителя, и количеством товаров в данной категории. Связь один ко многим.
Или вообще одна таблица производителей с полем для категорий товара в формате json в которой указана категория |(напр холодильник, и количество).
create table categories (
id integer primary key,
parent integer references categories,
name varchar(50) not null
);
create table manufacturers (
id integer primary key,
name varchar(30) not null
);
create table goods (
id integer primary key,
category integer references categories,
manufacturer integer references manufacturers,
name varchar(50) not null
);
select
m.name,
count(*) as goods_count
from goods as g
inner join manufacturers as m
on g.manufacturer = m.id
where category = 1
group by m.name;
select
m.name,
count(*) as goods_count
from goods as g
inner join manufacturers as m
on g.manufacturer = m.id
where category = 1
group by m.name;
если потребуется считать количество товаров по производителям, для вывода фильтра в категории, придется делал join по миллионной таблице, верно? Если всё же сделать отдельную таблицу с категориями товара и производителем, и таблицу связей, будет быстрее, верно?
Ошибаешься: не один-ко-многим, а многие-ко-многим. Холодильники выпускает не одна фирма. Но и фирмы выпускают не только холодильники. И потому таблиц 3: категории, производители и связь-категория-производитель. Вот эта третья таблица содержит поле кол-ва товаров.