Sto implementando un database di e-commerce. Questo è leggermente diverso rispetto alla maggior parte dei prodotti che sono in vendita per i servizi forniti. Ad esempio, un utente (fornitore) del sistema può definire un servizio per "lavare la tua auto".
Table: Services
--------------------------------------------------
| ID (pk) | Title | Description |
--------------------------------------------------
1 Home Services wash your car
Ho omesso un numero di colonne, ma dovrei comunque essere in grado di esprimere il mio punto.
Un cliente può quindi acquistare Home Services
. Quindi ho una tabella orders
con un FK per la tabella Services
. Materiale di e-commerce standard.
Il problema che ho è cosa succede se il venditore decide di aggiornare leggermente la descrizione o addirittura il titolo? Questo potrebbe avere l'effetto di cambiare l'intero servizio. Per un normale sito di commercio, devi aggiungere un prodotto discreto. Se questo prodotto è cambiato, si creerebbe un nuovo prodotto e si interromperà quello vecchio. Con i pacchetti, dobbiamo consentire gli aggiornamenti in quanto la descrizione è il prodotto e il tono di vendita (forse questo è il mio problema - forse separare i due?) Quindi devo consentire i cambiamenti.
Ad esempio potrebbero cambiare la descrizione in "lava la tua macchina e pulisci la tua casa".
Il problema ovvio con questo è che gli ordini esistenti faranno ancora riferimento allo stesso PK nella tabella dei servizi, ma il servizio ora è diverso.
Mi chiedo quale sia la soluzione migliore per consentire l'aggiunta di modifiche, ma mantenere i dati corretti per gli ordini esistenti. Una soluzione a cui ho pensato è di non aggiornare la riga, ma aggiungerne una nuova e un numero di versione
Table: Services
------------------------------------------------------------------------------
| ID (pk) | Title | Description | Version |
------------------------------------------------------------------------------
1 Home Services wash your car 1
2 Home Services wash your car and clear your house 2
Ora possiamo accedere alle informazioni corrette per gli ordini precedenti e i clienti esistenti possono acquistare l'opzione dei nuovi servizi di casa.
Questo sembra un modo ragionevole per farlo, ma vuoi vedere se qualcuno sapeva di altre soluzioni?
Un'altra soluzione è quella di consentire aggiornamenti sulla tabella dei servizi, ma poi per ogni ordine, salvare la descrizione e il titolo (analogamente a come a volte negli schemi di commercio il prezzo finale viene salvato direttamente nell'ordine). Il problema che ho con questo è un sacco di dati duplicati in fase di salvataggio.