Modifica la colonna esistente o il collegamento a ciò che è la modifica?

1

Sto facendo un gioco. In questo gioco le persone possono modificare il valore di un oggetto. Vediamolo in questo modo.

House è l'oggetto

il prezzo è il valore

Lo stampo è il modificatore

Devo riflettere le modifiche al prezzo della casa nel database modificando direttamente una colonna di dimensioni.

UPDATE house SET price = price - 2 WHERE id = 1;

O dovrei collegare il modificatore con una tabella di modifica in modo che possa tenere traccia del motivo per cui un prezzo è quello che è.

-- Psuedo Sql
house.price = abstract.house_price - modifier.mold

Da un lato, modificare semplicemente la colonna è semplice e ci saranno query più veloci se avrò un sacco di modificatori, cosa che farò.

D'altra parte, se qualcosa va storto con la mia matematica, avrò molte difficoltà a fissare i prezzi per essere quello che suppongono di essere.

È una cattiva idea fare entrambe le cose?

    
posta Goose 06.11.2016 - 16:56
fonte

2 risposte

1

Da dove viene il prezzo base della casa?

Se il prezzo base è completamente esente dai tuoi modificatori, un prezzo base + una somma di modificatori è un buon modo per calcolare il prezzo.

Se i modificatori possono insinuarsi nel prezzo base, devi semplicemente aggiornare il prezzo base non appena arrivano nuove informazioni e lasciarlo.

Come potrebbero insinuarsi i modificatori? Dipende dal modo in cui calcoli il prezzo base e se crei nuovi modificatori che non esistevano prima di essere considerati nel prezzo base.

Puoi evitare l'intero problema impostando il prezzo base su 0 e sommando i modificatori. Naturalmente, lo stesso problema si ripresenta se decidi di suddividere un modificatore in più modificatori. Alla fine, il prezzo base è in realtà solo un altro modificatore.

Che mi porta alla domanda acida:

Dovrebbe cambiare il valore del modificatore dello stampo cambiare il prezzo delle case che hanno già un modificatore dello stampo applicato?

Puoi provare a fonderlo applicando delta a prezzi precalcolati ma è fragile. È più sicuro conoscere tutti i calcoli che arrivano ad un valore. Non è sempre pratico.

    
risposta data 06.11.2016 - 19:49
fonte
1

Hai due punti distinti qui.

Store base + modificatori VS store total

C'è una casa al prezzo di 1000 $ e sono applicati due modificatori: x2 e + 50 $. Dopo un paio di giorni da quando la nuova versione ha colpito il mercato, un tizio ha riferito che secondo i suoi calcoli + 50 $ dovrebbe essere in realtà + 30 $. Se non hai la cronologia ordinata dei modificatori applicati - sei nei guai, dal momento che il prezzo corretto può essere qualsiasi ((1000/2 - 50) + 30) * 2 = 960 $ e (1000 - 50) / 2 * 2 + 30 = 980 $.

Se mantieni solo il totale, ti trascinerebbe nei guai almeno in questo caso limite. Memorizza sempre le informazioni dettagliate se hai una piccola possibilità di riavvolgere i modificatori e applicarli nuovamente.

Calcola da base + modificatori VS totale negozio + modificatori

Calcola fino a quando le prestazioni non scendono al di sotto del livello accettabile. Quindi dai un'occhiata a come è possibile migliorare le prestazioni db, come ultima risorsa introdurre una cache per il totale calcolato.

Dai anche un'occhiata a domande simili per avere un suggerimento.

    
risposta data 07.11.2016 - 10:19
fonte

Leggi altre domande sui tag