Реализация корзины

Набросал пару пунктов того, как на мой взгляд, должна быть реализована корзина покупок. Решил записать на всякий случай.

  1. Корзина хранится в БД
  2. Если пользователь известен (залогинен), то id корзины записывается ему в профиль
  3. Если пользователь неизвестен (гость), id корзины сохраняется в долгоживущую cookie

Надо предусмотреть действие на случай, если гость накидал товаров в корзину, а потом авторизовался и у него оказалась еще одна, непустая, сохраненная корзина.

Нужно предусмотреть механизм удаления старых корзин.

Почему бы просто не хранить все это добро в сессии? Спросите у маркетолога, какие идеи у него появляются при словах «брошенная корзина». :)

Кстати, бегло просмотрел несколько бесплатных скриптов — такого функционала не увидел. Максимум хранят корзину у известного пользователя, а корзину гостя в сессии.