2017-01-17 4 views
0

Я использую php и mysql для eshop. Когда в разделе продуктов для каждой категории мне нужен навигатор со всеми применимыми брендами и количеством продуктов. Моя проблема заключается в том, что категории и продукты имеют много-много отношений, а также продукты и совместимые бренды. Поэтому при просмотре категории наивный подход состоял бы в том, чтобы получить все продукты (через таблицу products_categories), для каждой выборки всех совместимых брендов (через таблицу products_brands) и подсчета их. Из моих исследований я также обнаружил, что соединения на нескольких таблицах дороги, в этом случае потребуется 4 соединения. Еще одна идея, которую я хотел бы сделать, - создать таблицы для хранения этой информации, но это потребует дополнительных операций при добавлении/удалении категорий, продуктов, брендов и т. Д. И может закончиться кошмаром для обслуживания. Есть ли лучший подход? спасибоЛучший способ подсчета результатов по нескольким многим многим связанным таблицам

ответ

0

Я не уверен, что вы можете избежать объединений с данным дизайном. Вы можете немного улучшить, создав представление между Products_Categories и Products_Brands. Это позволит вам оптимизировать способ запроса этих данных из разных контекстов (Продукты, Категории, Бренды). И вместо того, чтобы присоединяться к основным таблицам для описания, я отдельно запрашивал эти таблицы и накладывал на них стратегию кэширования и позволял клиенту иметь дело с сопоставлением идентификаторов с описаниями. Надеюсь, это имеет смысл.

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