Modello dati per la vendita di gruppi di prodotti come un unico prodotto

4

Suppongo di avere un e-commerce con un modello di dati simile al seguente, che consente a Sale di descrivere come viene venduto un singolo Product . Questa divisione consente a un prodotto di essere venduto più volte in modi diversi (prezzi diversi o offerti in un altro momento). Funziona alla grande quando una vendita vende un singolo prodotto.

Vendita

  • product_id (vendita appartiene al prodotto)
  • altri dettagli dell'offerta come prezzo, data di scadenza della vendita, contenuto di marketing, ecc.

prodotto

    Il
  • prodotto ha molte vendite
  • dettagli del prodotto fattuali come nome, foto, descrizione del produttore, ecc.

Il problema: come può essere migliorato questo modello di dati per consentire a una vendita di avere molti prodotti?

Ad esempio, per creare un pacchetto di 1 di prodotto A e 1 di prodotto B. Quindi se un cliente desidera quantità = 3 di questi pacchetti, riceveranno un totale di 3 A e 3 B.

Oppure una vendita potrebbe essere per multipli di un singolo prodotto. In questo caso la vendita sarebbe per 5 del prodotto C. Quindi, se un cliente desidera quantità = 3 di questi pacchetti, riceveranno 15 prodotti C.

L'idea migliore che ho finora è aggiungere una nuova tabella. Ciò consentirebbe a una vendita di fare riferimento a molti ordinabili, che descrivono cosa c'è nel pacchetto.

Orderables

  • appartiene al prodotto
  • appartiene alla vendita
  • qty nel pacchetto

Ma un refactoring di questa portata è un compito monumentale. Il numero di volte sale.product appare nella base di codice per una serie di motivi è enorme. E ogni singolo caso deve essere corretto nel codice e probabilmente anche nella presentazione.

Quindi, prima di impegnarci troppo in questo approccio, mi chiedo se ci sia un barlume di speranza che non ho ancora visto, o se il mio futuro è irto di dolore e pericolo per questo epico refactoring.

    
posta Alex Wayne 07.02.2014 - 02:55
fonte

1 risposta

4

In passato, quello che ho visto in aziende che lo fanno è uno dei due approcci:

  1. Un "pacchetto" è un prodotto separato. Viene inserito nel database come prodotto proprio, archiviato nell'inventario come proprio prodotto e rimosso dall'inventario e spedito come prodotto proprio. Non è richiesto alcun refactoring, ma si lega il prodotto nell'inventario che può essere venduto singolarmente, se è stato scomposto. Ha il pregio di essere personalizzabile come un pacchetto; il costo può essere diverso dai singoli prodotti.

  2. Un "pacchetto" è una "distinta materiali" che si conclude con un prodotto finito. Richiede un approccio completamente diverso e molto refactoring, ma preserva l'integrità dei singoli prodotti sugli scaffali. Ci sarebbero molte duplicazioni, dal momento che ogni singolo prodotto ha ancora bisogno di una propria distinta base contenente un oggetto (stesso).

Se lo facessi, troverei un modo per vendere l'idea di bundle come "quick-entries". Funziona come una macro GUI; si seleziona un pacchetto dall'elenco di prodotti e si aggiungono automaticamente i singoli elementi pubblicitari (e le quantità) necessari alla fattura. Hai ancora bisogno di una "distinta materiali" per implementarlo ma non devi rifattorizzare l'intero sistema.

    
risposta data 07.02.2014 - 03:03
fonte

Leggi altre domande sui tag