Среднее количество обращений к БД?
5 это нормально, не беспокойтесь. Количество не всегда важно, иногда и один запрос может базу положить ))
Пользователя то можно и в сессии хранить! )))
Если категорий не так много, можно и в кеш и из кеша брать )
А зачем так много запросов? почему нельзя в корзину сделать 1 запрос (положить в корзину продукт с таким то id)?