твой подход должен работать. еще как вариант, можешь сохранять не по user_id, а по session_id в БД. если твой пользователь зарегистрируется, просто добавишь user_id. тут и плюсы и минусы есть свои. можешь проводить аналитику товаров (потому что если в сессии напрямую - нет), из минусов - бдшка будет захламлятся немного