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.