Dipende dai tuoi obiettivi per il tuo carrello. Ad esempio, vuoi consentire gli acquisti degli ospiti? ovvero dove un utente non ha bisogno di effettuare il login per effettuare un acquisto?
L'immagine allegata è un progetto su cui ho lavorato e funziona così:
-
Un visitatore seleziona i prodotti dal sito e li aggiunge a un carrello di sessione (solo un luogo in cui conservare temporaneamente i prodotti, le loro quantità e i loro prezzi, ecc.)
-
Una volta che il cliente è pronto per il check-out, creiamo l'ordine, l'addetto all'ordine e il person_address (a cui il prodotto deve essere consegnato) e aggiungiamo gli articoli alla tabella order_item. Tutte queste informazioni vengono aggiunte dal cliente nella pagina di pagamento.
-
Il passaggio finale è quindi quello di offrire le modalità di pagamento:paypal, carta di credito, ecc.
Quello che mi piace di questo design è che gli utenti non hanno l'obbligo di registrarsi con noi. Order_person agisce come una sorta di interfaccia tra utenti e ordini. Se ti registri, colleghiamo semplicemente order_person alla tabella utente...
Ho incluso anche un esempio di front-end della pagina di pagamento.