Как хранить корзины и другие пользовательские данные для гостей и зарегистрированных?

На сервере необходима информация о корзинах, избранном, просмотренных товарах и подобных данных. Поэтому хранить в куках и сессиях не вариант. Хранить совместно данные об обоих видах пользователях, через алиас пользователя (единый идентификатор для обоих) - не вариант.

В качестве решения выбрано: создать дублирующие таблицы. Зарегистрированные пользователи идентифицируются по целочисленному id, гости по uuid. Получается следующий список таблиц

user:      id
cart:      id, user_id, order_id
cart_item: id, cart_id, product_id
favorites: id, user_id, product_id

guest:           uuid
guest_cart:      uuid, guest_uuid
guest_cart_item: uuid, cart_uuid, product_id
guest_favorites: uuid, guest_uuid, product_id

В guest_cart отсутствует order_id, т.к. при создании заказа (при регистрации или авторизации) данные переносятся в пространство user, а из guest* всё удаляется.

Какие есть ещё варианты решений данной проблему? Чем плоха эта реализация?

С праздником))
  • Вопрос задан
  • 108 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы