Post by Andrea BarbagalloScusatemi: ho riletto il mio post precedente ed ammetto di essere stato
estremamente vago. Provero' ad essere piu' chiaro.
Premetto che vorrei realizzare un'applicazione di tipo gestionale per
aziende (es. fatturazione e magazzino) che sia il piu' possibile
indipendente dal tipo di database utilizzato per contenere i dati ed il
piu' possibile "scalabile".
[...]
Non ho letto tutto il tuo post, ma ci sono un paio di cose che ho letto
che mi hanno fatto un po' rabbrividire.
Prima cosa la scelta del database. Nomini Access con accesso multiutenza.
A questo punto, perchè non passare ad un database serio e non una cosa
che gli assomiglia poco e male? (per favore non lanciate flame. Access
*non* *è* un database relazionale degno di questo nome. Per non parlare,
poi, della sicurezza dei dati).
Ci sono diverse soluzioni, free e non, sia in mondo M$ che al di fuori
di esso.
Se proprio vuoi rimanere in mondo M$, ti consiglio MSDE. Si tratta del
motore di SQL Server, senza tutti i programmi di contorno. Oppure
potresti muoverti verso PostgreSql (ottimo) o MySQL (altro db buono).
I vantaggi principali sono
1) avere database seri che ti garantiscono anche che i dati non vanno
persi per colpa di un accesso contemporaneo al file di DB.
2) (su Postgres ci sono, su MSDE dovrebbero esserci e su MySQL non so)
puoi impostare vincoli di integrità referenziale tra le tabelle,
impostare indici per un accesso migliore alle tabelle, gestire trigger
per effetturare operazioni particolari prima o dopo le query in modo
automatico (come per esempio mettere in pista un "cestino" o bloccare
una update se il record è già stato finalizzato)
3) (anche qui non credo che MySQL abbia qualcosa di simile, ma mi posso
sbagliare) puoi usare delle stored procedure (non so come le chiami
MSDE), ossia codice che salvato nel database ed eseguito dal database,
ti permette di automatizzare tutta una serie di operazioni.
4) manutenzione più facile
5) accesso con username e password per la protezione dei dati (puoi
anche impostare utenti che hanno solo diritti di interrogazione)
6) prestazioni migliori
e tanti altri vantaggi.
In più, MSDE e PostgreSQL (anche MySQL, ma solo con l'ultimo tipo di
database che hanno aggiunto nella versione 4 o 5) supportano già le
transazioni, ossia permettono l'accesso simultaneo al database a più
utenti (e non parlo di solamente 2 utenti) interbloccando
automaticamente le operazioni di selezione e modifica, solo se queste
avvengono sugli stessi elementi, e permettendoti di confermare o
annullare l'intera sequenza di modifiche all'ultimo momento (apri la
transazione, fai una serie di query, nessun altro può modificarti i dati
sotto al naso, trovi che esiste una condizione che non ti piace o non
piace al db, come una foreign key non valida, annulli la transazione e
nessuna modifica è stata fatta al DB, oppure se non ci sono errori,
confermi la transazione. Quando la transazione termina, gli altri
possono accedere a quei record e continuare il loro lavoro come se nulla
fosse).
Come metodo di accesso, poi, puoi considerare l'uso delle ODBC (un po'
pesantine, a mio parere, ma ti permettono di astrarti sufficientemente
dal tipo di database che stai utilizzando).
Ultima cosa, ma non per importanza, un database serio come quelli che ti
ho elencato, può stare anche su un'altra macchina collegata in rete.
Access aveva problemi di corruzione del file di dati (non so se questo
baco sia stato corretto o no) in caso di accessi da rete.
Spero di esserti stato utile.
Luca