Domanda

Ho un problema, che mi aspetto è molto comune, ma non sono sicuro di cosa cercare, come può essere spiegato in molti modi diversi.

Sto progettando una struttura del database per la gestione di fatture, prodotti, prezzi, valute, ecc.

Sono in grado di gestire i prezzi e i nomi dei prodotti (questi dovrebbero cambiare ogni tanto).

Su fatture, i prodotti sono aggiunti per quantità, con sconto, IVA, unicorni, scoiattoli e così via, e quindi il totale della fattura è calcolato.

Ora, quando un prezzo viene aggiornato nella tabella dei prodotti, la fattura non dovrebbe cambiare. Ha bisogno di rimanere lo stesso per sempre.

Quando pensi a questo, a me sembra che l'elenco dei prodotti sia un elenco di oggetti "di tipo classe", che descrivono come appare un prodotto. Oppure potremmo chiamarlo un "modello" o "base" o "abstract", a seconda di quale astrazione pensiamo.

I prodotti che vengono aggiunti alla fattura sono "istanze", "implementazioni", "bambini", "record di versioni" o qualsiasi cosa li chiami.

Come potrei strutturarlo nel database? Potrei dividerli in due diversi tavoli "AbstractProduct" e "Prodotto", ma avrebbero più (possibilmente tutti) delle loro colonne in comune. A tal riguardo sembrerebbe opportuno tenerli nello stesso tavolo. Ma poi avrei bisogno di una colonna extra per significare se è "classe" o "istanza". Anche quello va bene. Questo potrebbe anche essere un tasto straniero alla classe è stato creato da (o null per le lezioni).

Ho provato diversi approcci, ma tutti sembrano aver fastidiosi avvertimenti.

è questo un modello noto? Come si chiama? Ci sono migliori pratiche per risolvere questo problema?

È stato utile?

Soluzione

È un modello ben noto.Se vuoi una vasta letteratura su questo argomento, cerca il "database temporale".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top