Armazenamento de itens do carrinho de compras em cookies e banco de dados

Estou trabalhando em um site de comércio eletrônico. Quando o usuário não está conectado ao meu site e clica no botão "Comprar agora", desejo armazenar essas informações tanto no cookie quanto no banco de dados. A tabela para o carrinho de compras é semelhante a

SHOPPING_CART 
(
     sessionid   int(10), 
     itemid      int(10), 
     quantity    tinyint(10) unsigned
     date_added  datetime
);

chave @Primary é:(sessionid, itemid)

Quando o usuário fecha o navegador, os itens do carrinho de compras também devem ser preservados. Agora, minha pergunta é a seguinte:

Quando o usuário não está conectado ao meu site, com que base devo identificá-lo? Devo armazenar as informações usando oIP address? Se sim, então COMO? Nesse casosessionid na tabela acima mencionada seria o endereço IP do usuário. Certo Devo criar uma sessão temporária para cada usuário que visita meu site e depois armazenar as informações? Se sim, então COMO?Como os itens do carrinho de compras podem ser preservados mesmo quando o usuário fecha a janela do navegador? Devo recuperar do banco de dados ou cookie? Existe outro método melhor para armazenar e recuperar as informaçõe

Nota : Posso usar muitos softwares / códigos / bibliotecas do carrinho de compras disponíveis. Mas eu quero saber:Como identificar o usuário? E armazenamento / recuperação de dados.

Nota : O preço de cada item, pedido e informações de remessa são armazenados em tabelas diferente

questionAnswers(2)

yourAnswerToTheQuestion