Come gestire i dati immutabili sui database

1

Sto lavorando a un software di quotazione. In pratica crea preventivi per i clienti sulla base di certe percentuali ProductModel che contiene n Plan che contiene n PriceRange

Modifica

Ecco un diagramma ER del DB corrente

Quando crei una citazione, selezioni 1 o più PriceRange s per essa. Il fatto è che i valori dell'attributo PriceRanges possono essere modificati da un utente. Se cambiano il valore di un attributo, l'offerta precedente dovrebbe mantenere il valore con cui è stato creato (insieme ai valori dell'attributo Plan e ProductModel con cui è stato creato).

Abbiamo provato a creare una tabella chiamata QuotationDataParam che contiene ciascun attributo per le altre 3 tabelle (ProductModelName, Description, PlanName, RangeLow, RangeHigh, Bounty e Fine). Ma in questo modo non puoi raggruppare PriceRange di Plans , né puoi raggruppare Plans di ProductModel .

    
posta Christopher Francisco 01.03.2015 - 19:00
fonte

2 risposte

2

Mantieni i dati dell'intervallo di prezzo nella tabella di PriceRange, ma memorizza queste informazioni nella quotazione anche, utilizzando tabelle di dettaglio delle quotazioni aggiuntive, se necessario.

Questo non è diverso da qualsiasi altra fattura ordinaria. I prezzi di ogni elemento pubblicitario vengono sempre copiati negli elementi pubblicitari della fattura, in modo che riflettano il prezzo degli articoli al momento della creazione della fattura.

    
risposta data 01.03.2015 - 21:26
fonte
0

Presumo che il problema è che vorreste avere alcuni vincoli e chiavi esterne per rendere il database automaticamente impone dichiarazioni come "ogni quotazione è compresa nell'intervallo di prezzo per quel cliente / prodotto / ecc", ma non può perché gli intervalli di prezzo possono cambiare.

Vorrei associare un timestamp a ogni fascia di prezzo e offerta . Quando la fascia di prezzo cambia, non si elimina il vecchio intervallo, ma si aggiunge semplicemente un nuovo intervallo con un timestamp più recente. In questo modo, per convalidare una quotazione, devi semplicemente verificare la più recente fascia di prezzo il cui timestamp sia precedente al timestamp della quotazione. In alternativa, puoi assegnare ad ogni versione di ogni fascia di prezzo un numero identificativo univoco tramite un altro meccanismo, ma ritengo che il timestamp sia più significativo nel tuo caso.

Naturalmente, questo può essere un po 'complicato, specialmente quando si tratta di raggruppare le query che hai suggerito, ma la maggior parte delle aziende può probabilmente trarre vantaggio dall'avere una traccia di controllo formale di chi ha cambiato i prezzi di quel prodotto quando, quindi ci sono molte ragioni per seguire questa strada.

    
risposta data 01.03.2015 - 20:31
fonte

Leggi altre domande sui tag