Utilizzo del tipo di dati xml per memorizzare un "carrello della spesa"

0

Per il mio progetto finale a scuola dobbiamo sviluppare un negozio online. Questo negozio dovrebbe avere un carrello in cui gli articoli possono essere inseriti indipendentemente dal fatto che tu abbia o meno effettuato l'accesso. Se esci, il carrello non dovrebbe essere vuoto e dovrebbe comunque essere mostrato.

Quindi la mia domanda è che avrebbe senso memorizzare il carrello come xml nel database (ms sql server)? Esiste una potenziale quantità (relativamente) di dati che dovrebbe essere mantenuta, è possibile che ciò possa fornire vantaggi in termini di prestazioni o se non lo faccio?

    
posta The_Cthulhu_Kid 11.01.2013 - 18:13
fonte

3 risposte

3

This shop should have a cart where items can be placed whether or not you are logged in. If you log out the cart shouldn't empty and should still be shown.

Questi requisiti sembrano richiedere l'archiviazione lato client, ovvero cookie o localStorage. Ma ovviamente puoi impostare un semplice cookie, separato dal cookie di sessione, che fa riferimento a un carrello acquisti memorizzato nel database.

Non vedo molta necessità di XML in questo lavoro, mentre a volte può esserci un vantaggio in termini di prestazioni derivante dalla raccolta di molti dati in una singola stringa (che potrebbe essere in formato XML) e dall'archiviazione nel database, piuttosto che memorizzare gli stessi dati di molte voci, non penso che si applichi in questo caso poiché si aggiorna molto, non si legge molto e quando si legge è necessario dividere immediatamente i dati per ulteriori informazioni.

    
risposta data 11.01.2013 - 21:02
fonte
1

Se utilizzare un database sul lato server o un cookie dipende dal fatto che si desideri che un utente abbia gli stessi articoli nel proprio carrello quando è connesso da un altro (dispositivo / browser). A meno che l'utente non impazzisca e ordini migliaia di articoli, la quantità di dati non sarà probabilmente un fattore importante.

Sia che tu memorizzi i dati in XML, JSON, o in qualche altro formato dipende dalle tue preferenze e dal tuo ambiente (ad esempio, sono gli strumenti che usi meglio per trattare con XML che con JSON?)

I dati che memorizzi devono essere minimi: non vuoi replicare prezzi, dettagli del prodotto, ecc. nei dati del carrello.

    
risposta data 11.01.2013 - 18:26
fonte
1

Ho lavorato su un sistema che ha implementato un carrello della spesa esattamente in questo modo: i carrelli della spesa "in corso" sono stati serializzati in XML e memorizzati in un singolo campo in una singola tabella nel database.

Il motivo per farlo non è tanto la prestazione quanto la facilità di sviluppo. Sospetto che, una volta, i carrelli della spesa siano stati archiviati solo in stato di sessione, quindi se si è allontanati dal sito e restituiti un'ora dopo, non ci sarebbero più. Sospetto che quando è arrivata una richiesta per farli persistere nei confronti di un utente, il modo più rapido per farlo era semplicemente decorare le varie classi coinvolte con gli attributi di serializzazione XML, serializzare, memorizzare.

Il trabocchetto a cui prestare attenzione è che ciò renderà difficile fare molto con i dati diversi dall'archiviazione e dal recupero dei carrelli degli utenti. Ad esempio, se un determinato prodotto viene rimosso dal catalogo, è possibile rimuoverlo da qualsiasi carrello. Se i tuoi carri temporanei fossero stati archiviati come un mucchio di tabelle, li avresti trovati semplicemente con qualcosa come SELECT * FROM ShoppingCartItems WHERE ProductID=@productIdToDelete . Se è tutto in blob XML, non sarà semplice e potresti trovare un approccio migliore per convalidare nuovamente tutti i carrelli quando vengono richiamati dal DB e deserializzati.

    
risposta data 11.01.2013 - 21:24
fonte

Leggi altre domande sui tag