Hablo desde el punto de vista de haber hecho diversas tiendas.
Yo utilizo cookies, ya que permite guardar la compra de un día para otro y no mete basura en la base de datos.
Es increible la cantidad de pedidos que comienza la gente y nunca llega a finalizar.
No llego a ver esos productos, porque nunca pasan por la base de datos, pero si observo cientos de registros sin compra, que tal y como está estructurada la web tuvieron que crear un carro para llegar al paso del registro.
Variables de sesión no recomiendo porque muchas veces los clientes añaden productos, se marchan, vuelven más tarde o al día siguiente a acabar el pedido y está bien facilitarles el trabajo y que no tengan que volver a buscar los productos.
O en el caso de que se cuelgue el navegador también perderían la compra y eso sí que es molesto.
Usar la base de datos, implica un registro previo, salvo que generes una clave única que se pueda asociar a ese cliente y no a otro. Esa clave (creo) que debería estar en una cookie para que el carro no quede huérfano si retoma la compra al día siguiente.
Ventajas? Estudio de mercado, saber que busca la gente, para después intentar saber porqué no compraron (el precio por ejemplo)
Problemas? carga sobre la base de datos
Valora todos esos factores y elige sesión, cookie o db. Los tres son válidos.
Saludos,
--
Jairo Ochoa