[trashware] DB TrashMag

Davide Lamanna davide.lamanna@isf-roma.org
Mar 25 Ott 2005 17:38:52 CEST


Caro Flavio,

sarebbe davvero utile avere uno schema progettuale del DB (ad esempio, uno 
schema ER), in quanto molte delle incomprensioni che si hanno via email sono 
dovute al mescolarsi di aspetti progettuali ad aspetti implementativi.

Proviamo a dire comunque qualcosa.

1) Ci sembra eccessivo fare la localizzazione per avere un DB distribuito se 
poi abbiamo solo esigenza di accedere in lettura ai DB non locali. E' come 
sparare ad una mosca con un cannone.
:-)
Proponiamo invece che ognuno lavori sul proprio DB localmente e si mettano a 
disposizio i vari DB o tramite una pagina web sul sito della singola 
associazion o tramite l'accesso ad un solo server per tutti.


2) Invece di utilizzare una tabella con un numero di campi variabile (peraltro 
all'interno della stessa stringa, vedasi campo "desc" della tabella 
tab_tipo), si potrebbe utilizzare una generalizzazione in base alla tipologia 
del pezzo.
Esempio: invece di fare solo la tabella pezzo, si potrebbero aggiungere 
tabelle come scheda di rete, scheda video e scheda audio con attributi fissi 
e ben definiti. Altrimenti il rischio e' che per cercare un particolare 
attributo di un pezzo si deve ricorrere al parsing della stringa. Che non e' 
bello...
:-)
La tabella tab_tipo contiene addirittura il numero di attributi associabile al 
pezzo. In sostanza si tenta di implementare a mano una generalizzazione.


3)

> - se io scarico un pc è inutile che mantenga in memoria record di
> pezzi in quanto tali record appesantirebbero le ricerche nella
> tab_magazzino

Per cercare un pezzo nel DB si esegue un join tra la tabella magazzino e la 
relazione intercorrente tra i pezzi e il magazzino. Se non c'e' il 
collegamento, in fase di ricerca non vado ad impattare in alcun modo sulle 
prestazioni.
Questo a meno che non si intenda (ma allo stato attuale non c'e' traccia di 
questo nel DB) associare alla tabella pezzo direttamente l'ID del magazzino, 
caso in cui la ricerca implicherebbe (stavolta si') lo scorrimento di tutti i 
record. Quindi noi sconsigliamo di procedere in questo senso.
Il vantaggio nel tenere in memoria i record, d'altro canto, e' la completa 
tracciabilita' del PC e di tutti i pezzi che esso contiene. E questo a costo 
zero.


4)

> - io posso avere bisogno di recuperare i dati in maniera abbastanza rapida

Accedere un file di testo implica una ricerca esaustiva e dunque tutt'altro 
che rapida. A meno che tu non voglia fare il dump del file di testo nel 
magazzino. Ma questo significherebbe ritrovarsi ogni volta con una 
inconsistenza tra i pezzi nel magazzino fisico e quelli nel DB. Ma dubito che 
voi intendiate fare un dump inverso.


5)

> - chi usa il database di testo è solo la persona che materialmente stà
> mettendo le mani sullo specifico PC in quanto esiste un solo file di
> testo per ciascuno dei PC in lavorazione e/o chiuso.

Quindi, ci pare di capire, nel file di testo corrispondente al singolo PC vi 
sono i pezzi in esso contenuti. Ma la tracciabilita' dovrebbe essere compito 
della base di dati, non del file di testo. E' un lavoro inutile, in quanto i 
dati sono gia' contenuti all'interno del DB. Con il DB e' sufficiente 
associare il pezzo al PC in lavorazione e non al magazzino.


Commento finale:

Vogliamo lavorare ancora un po' sulla progettazione prima di buttarci a 
capofitto nella implementazione?


Saluti progettuali,
Davide


Maggiori informazioni sulla lista trashware