At 09.05 04/01/2008, Filippo Cerulo wrote:
Tornando al discorso Clienti / Fornitori, anche
in questo caso non sono daccordo.
Supponendo di impostare un valore intero,
chiamato ad esempio TIPO con questi valori:
0=Cliente/Fornitore, 1=Solo Cliente, 2=Solo
Fornitore, ogni volta che devo fare una ricerca
sull'archivio dei Fornitori dovrei impostare un
criterio del genere: "TIPO=0 or TIPO=2", che
comporta pur sempre l'esecuzione di una Query.
Quindi a volte duplicare i Dati su due Tabelle
può essere conveniente, ma si giudica caso per caso.
Anche se la discussione è comunque un po' OT, porto la mia esperienza.
Lavoro da più di sei anni ormai su un sistema a
cui ho partecipato sin dalla sua progettazione
più concettuale (mi occupo di sviluppo e
progettazione software). Sin dalle sue basi era
stato pensato per poter essere adeguato a realtà
aziendali differenti e dunque si desiderava una
soluzione che non fosse costruita sul singolo
caso. Replicando alcune scelte fatte con la
versione precedente del sistema, abbiamo creato
una tabella Fornitori, una tabella Clienti e una
tabella Aziende (per i vettori, gli
spedizionieri, e cose del genere). In più c'è una
tabella Sedi che identifica le varie sedi
dell'azienda "proprietaria" del sistema. Per
chiarire (spero), i fornitori sono quelli che
mandano il materiale ad una sede, che lo riceve,
lo lavora e lo spedisce a un cliente. Le aziende
entrano nel processo quando, per esempio, devo
indicare in una spedizione il vettore usato per il trasporto.
Tutto bene, finché non si desidera fare invii di
materiale tra una sede e l'altra. Non è
possibile, perché tutte le fasi del processo
dalla lavorazione alla spedizione necessitano
dell'informazione del cliente. Che fare, cambiare
il sistema in modo tale che ci siano due strade,
una verso clienti e una verso sedi? Alla fine
optiamo per creare i cosiddetti "clienti/sedi",
ovvero la stessa entità assume due facce collegate tra loro.
Dopo un po', però, si vuole anche tener conto che
i clienti possono inviare materiale alle sedi,
oppure tener conto delle giacenze di materiale
presso i fornitori, o ancora spedire materiale ai
fornitori. Per un motivo o per un altro, le varie
esigenze vengono accontentate in modo differente,
inserendo i clienti nell'anagrafica fornitori
senza però legare questi record a quelli dei
clienti, creando "clienti/sede" per i fornitori,
creando una biforcazione nel processo di
spedizione bolle per poter spedire
alternativamente verso fornitori o clienti.
Insomma, un guazzabuglio di soluzioni e di
duplicazione dati. Lascio perdere poi i casini
derivanti dai disallineamenti che si vengono a
creare tra i campi di anagrafica di un fornitore
e di un'azienda (telefoni più lunghi su una
tabella e più corti sull'altra, per esempio).
Ora, se dovessi riprogettare il sistema,
riassumerei le tabelle Fornitori, Sedi, Aziende e
Clienti in una sola: Enti. Un'unico contenitore
per tutti i dati anagrafici e tipici di ogni
soggetto di questo tipo (nominativo, indirizzo,
contatti eccetera). E per i dati tipici di una
particolare entità (ad esempio, il mercato per i
clienti, la gestione dell'ingresso per la sede,
eccetera) delle tabelle figlie con i soli dati
non comuni. In questo modo, ogni volta che devo
far riferimento ad una di queste entità, per
indicare ad esempio il mittente di una bolla in
entrata, oppure il destinatario di una
lavorazione, di un ordine o di una spedizione,
non devo sapere se è un fornitore o un cliente o
chissà cosa: sarà semplicemente un Ente. E
tramite tabelle dedicate, indicherei quali enti
sono fornitori per un ente e quali sono per esso clienti.
Naturalmente, questo è un caso di un sistema
complesso, che deve soddisfare esigenze di
aziende molto diverse tra loro e che anche al
proprio interno hanno gestioni di materiali molto
differenti. In caso di piccole applicazioni,
tutto questo probabilmente non serve. Però volevo
dire la mia, perché sinceramente non credo che il
problema sia aggiungere un filtro in una query
per capire se un dato record è di un cliente o di
un fornitore, visto che i loro dati sono su un
unica tabella. In un sistema elaborato come
quello da me esposto, è davvero il più piccolo
dei problemi. Spesso già la duplicazione del dato
su più tabelle (o anche sulla stessa...) è un problema ben maggiore.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]