Newsgroup: it.comp.lang.visual-basic
Titolo: [OT] Come archiviare e richiamare dati

Da quando ho a che fare con la gestione di dati che vanno archiviati e
ripescati non sono ancora riuscito a risolvere in maniera soddisfacente
il problema che vado ad illustrarvi tra breve.
Probabilmente diplomati e laureati in informatica studiano questo
problema al primo anno, io invece ho voluto fare l'autodidatta e ...
..  sono giunto alla conclusione di aver bisogno di qualche "maestro"!
Ecco in maniera molto semplice il problema:
In un archivio ho una tabella che contiene dati su prodotti:
IDPRODOTTO(long) Nome(String) Prezzo(Double) Codice_Articolo(String)
I dati di questa tabella sono utilizzati per fare una fattura (o un
ordine, o qualsiasi altra cosa...). Per cui archviero' i dati della
fattura in questo modo:
Tabella fatture:
IDFATTURA Numero Data Cliente   
Tabella specifiche fatture:
IDFATTURA IDPRODOTTO
Fin qui nessun problema. 
Supponiamo ora che i dati di un prodotto vengano modificati, ad es. il
prezzo cambia. A questo punto ci sono 2 strategie:
1. Modificare il dato del record
2. Segnare come archiviato il vecchio record e crearne una copia con un
diverso IDPRODOTTO e con il prezzo modificato
Ma ovviamente ognuno di questi 2 metodi crea parecchi problemi.
Se ad es. decido di modificare la fattura memorizzata come indicato
sopra, con il metodo 1 mi ritrovo con un prezzo errato, con il metodo 2
ho qualche problema per la gestione dei prodotti perche' devo poter
visualizzare e selezionare anche i prodotti archiviati, mentre in genere
per fare una nuova fattura si utlizzano i dati piu' recenti.
E non proseguo perche' mi sta gia' venendo l'ansia :-(
La mia domanda:
Immagino che non sia io il primo ad affrontare questa situazione; sono
sicuro che esistono delle teorie standarg di gestione archivi.
Sapete consigliarmi dei metodi, dei libri o delle risorse in rete per
utilizzare un'approccio soddisfacente a questo tipo di problemi?
grazie a tutti
			maxx

diverso IDPRODOTTO e con il prezzo modificato
Io ho sotto mano il DB di un tool di Project Management e per un problema
analogo fa una cosa del genere:
invece di mettere il prezzo nella tabella dell'anagrafica prodotti (in cui
avresti ID_Prodotto (PK),...,  Prezzo)  si crea una tabella in cui ci mette
le variazioni dei prezzi nel tempo (ID_VARIAZIONE DI PREZZO(PK),
ID_Prodotto(FK), DataVariazioneDiPrezzo, NuovoPrezzo)
cosi' quando calcola la fattura cerchi il prezzo corrispondente alla
variazione in cui la data e' la massima tra quelle minori a quelle della
fattura.
Spero di essere stato chiaro.
Saluti
locaduck




sicurezza.
La replicazion genera sicurezza se e' ben progettata e ben gestita,
altrimenti spreca spazio e puo' ingenerare confusione e problemi di
disallineamento (non credo sia il tuo caso, e' solo una considerazione
generale).
Comunque IMHO e' bouna norma non replicare gli stessi dati nello stesso
database, ma al massimo avere copie degli stessi (viste) su DB distinti, in
luoghi fisicamente distinti e per utilizzi distinti.
Saluti
locaduck



Vi ringrazio per le risposte!
Le soluzioni suggeritemi sono le stesse che anch'io di volta in volta
utilizzo. E siccome non mi piacciono, chiedevo appunto soluzioni
alternative piu' "furbe".
Immagino che se nessuno in questo NG mi da soluzioni diverse,
probabilmente significa che non ce ne sono.
Mi rassegno e contimuo a scrivere il mio codice ;-(
ciao
		maxx


 luoghi fisicamente distinti e per utilizzi distinti.
 ------------
Nulla da dire; io parlavo comunque di ridondanza passiva (quella che non
genera problemi di allineamento) .. ma queste forse è pura teoria !
                Ciao
                                                                Davide


OK
Saluti
locaduck

In effetti il polemico sono stato io .... scusami ...
        Ciao !
                                Davide

> "Massimo Conter"

Io la vedo cosi': la fattura e' un *documento* e come tale deve essere
memorizzata. Una cosa e' la gestione "dinamica" ed una quella "statica": una
volta che il documento e' stato spedito non deve essere piu' modificabile e
chi lo consulta deve essere certo di leggere le stesse cose che sono
stampate su carta e che sono state recapitate alla controparte, cliente,
fornitore o quel che e'. Quindi credo che il record principale ed i relativi
record di dettaglio del documento debbano contenere non "puntatori" per la
decodifica ma tutto ed esattamente cio' che e' stato stampato.
--
Ciao.
Maurizio

Io la penso esattamente come te Maurizio.
            Ciao
                                        Davide



Sarebbe bello in teoria! In pratica poi  tutti  i miei clienti 2 minuti
dopo aver stampato una fattura si  accorgono di  qualcosa che non va.
Ma anche 2 giorni dopo ...
Succede allora che nel frattempo sono state fatte delle modifiche a
prezzi, descrizioni, costi e quant'altro e se si va amodificare una
fattura gia' stampata, non necessariamente spedita, bisogna tener conto
delle variazioni avvenute nel frattempo.
Quindi non e' cosi' semplice affermare che e' sufficciente che basta
memorizzare tutti i dati...
Non per niente ho fatto la domanda al Ng ;-)
ciao
		maxx


 Non per niente ho fatto la domanda al Ng ;-)
Bah, questa non te la faccio passare, anche se ci metti tutte le strizzatine
d'occhio che vuoi. Tu, praticamente, intendi, come si direbbe dalle mie
parti: cio', mona, e ti pare che venivo in cerca di te se era cosi' facile?
Attento a non sottovalutare l'analisi, la teoria ed un certo rigore
nell'approccio a tali problematiche perche' ad un certo punto i nodi vengono
al pettine e allora c'e' poco da scherzare.
--
Ciao.
Maurizio

Permettimi di controbattere al tono delle tue risposte:
Punto 1: io ho posto una questione al NG perche' penso che persone piu'
esperte in un certo argomento possano aiutare a risovere problemi miei e
di chi consulta il NG.
Punto 2: non necessariamente chi risponde possiede la verita', perche'
la soluzione che va bene a te non necessariamente e' adatta a me!
Punto 3: Non voglio questionare su: "Quello che e' bello in teoria e'
bello anche in pratica" perche' le teorie in ogni campo cambiano con
frequenza notevolissima e cio' che e' bello in teoria e' bello fin che
dura ...
punto 4: ma che me ne cale di quello che per te e' una fattura!!!
Le fatture sono fatture e basta. Se l'utente decide di cambiarla prima
che venga registrata sui registri IVA puo' benissimo farlo. Anche dopo
averla spedita!! E poi quello delle fatture era solo un praticissimo
esempio, da libro di infornmatica pratica.
punto 5: "E' che le cose vanno fatte come devono essere fatte." 
Viva la tautologia inutile ed il pensiero autoritario!
Punto 6: "Attento a non sottovalutare l'analisi, la teoria ed un certo
rigore nell'approccio a tali problematiche perche' ad un certo punto i
nodi vengono al pettine e allora c'e' poco da scherzare." 
Mi spiace ripetermi, ma la domanda che ho fatto al NG e' giustificata
proprio da una necessita' che sento di chiarire alcuni concettti visto
che i nodi vengono al pettine con qualunque approccio! 
E per concludere, il mio post diceva:
"Immagino che non sia io il primo ad affrontare questa situazione; sono
sicuro che esistono delle teorie standarg di gestione archivi.
Sapete consigliarmi dei metodi, dei libri o delle risorse in rete per
utilizzare un'approccio soddisfacente a questo tipo di problemi?"
Non chiedevo 2 righe di ricetta per salvare delle fatture.
Nessuno mi ha risposto!!!
grazie comunque
		maxx

 grazie comunque
Prego.
--
Ciao.
Maurizio

Ma sei un programmatore turnista? 
Una settimana 6 - 14
una 14 - 22
una 22- 6   :-)
ciao
		maxx
