Newsgroup: it.comp.lang.delphi
Titolo: Concetti basilari applicazione db Client-Server

Ciao,
sto cercando di reperire piu' informazioni possibili per riscrivere la mia
vecchia applicazione db
passando da paradox a MS sql server 7.0.
La struttura delle tabelle e' relativamente semplice ho una tab master
Anagrafica che per ogni
record ha un id univoco. Poi ci sono tante details (uno a molti) collegate
alla master tramite questo
id. Volevo sapere:
1) Mi conviene usare solo TADODataSet invece delle table? Se si, perche'?
2) Quale e' la tecnica corretta? Eseguire una query che ritorni:  id_univoco
Cognome Nome(nel caso ci siano piu nominativi uguali)
    per poi farne scegliere uno e poi eseguire tutte le altre query, una per
tabella ricercando tutti i record con quell'id?
   Immagino che io debba avere un TADODataset per ogni tabella..
3) In genere quando si distribuisce una applicazione multiutente sql server
come si fa per creare il db sul server?
    Via codice (magari la prima volta che viene fatto girare il client)
oppure si distribuisce il file db gia' creato?
4) Sapreste consigliarmi un buon sito oppure un libro per imparare di piu'
su programmazione db client-server?
Prima di imbarcarmi in una tale impresa volevo perlomeno avere ben chiare le
regole basilari, cosi'
da non doverci rimettere le mani...
Ciao e grazie!
        Fabio

 da non doverci rimettere le mani...
Leggere meno record possibile
l'utente deve impostare dei filtri molto precisi.
Ad esempio, se digita solo %, forse sarebbe il caso di segnalare "fregati,
almeno una lettera devi darmela...."
usare dove possibile cursori unidirezionali e/o a sola lettura.
Esemopio pratico: i report.
Infine, ricorda che i db c/s hanno varie potenzialita che, se sfruttate nel
modo giusto, risolvono una marea di situazione.
vedi le stored procedure.
Una postilla riguarda la assegnazione dei valori alle PK.
Io al momento uso Ib6.
Mi sono creato delle stored procedure che a loro volta richiamano il
generatore che mi serve.
Poi, nella OnNewRecord delle mye query, assegno alla PK il valore restituito
dalla SP.
In questo modo, la applicazione VEDE il nuovo id.
Se ad esempio lo fgai con un trigger, in locale non vedi il nuovo valore.
Quindi, se devi inserire 100.000 records letti da un qualcosa, usare un
trigger per l'assegnazione della PK č un buon sistema.
Ma se la PK ti serve nella tua applicazione, il trigger non conviene.
Bye
AS

 Ma se la PK ti serve nella tua applicazione, il trigger non conviene.
PK,SP,Trigger?? Non ti seguo +! :) Non ti preoccupare, colpa mia, io non
sono un programmatore
mi diletto solamente.
Ciao

 Cosa e' e a che cosa serve una Stored Procedure?
Una stored procedure è un blocco di codice incluso nel db scritto con il suo
proprio linguaggio sql.
In pratica, sposti una parte delle operazioni dalla tua app al db.
Se mi passi il tuo indirizzo privato ti giro un link che punta ad un sito
dove trovi un mio articolo sull'argomento.
Pk=primary key
Sp = stored procedure
Trigger:
un blocco di codice simile ad una stored procedure associato ad un evento
del db:
ON INSERT
ON DELETE
ON UPDATE
Hai presente gli eventi della TQuery che vedi nell'object inspector?
Solo che, invece di mettere la roba nella tua app, sposti le cose nel db.
Ad esempio puoi srivere un trigger che, quando viene eliminato un record
nella tabella A crea un record nella tabella B...
Una stored procedure tipica di ib6:
set term!!
create procedure MakeNewId returns (AID integer) as
begin
  AId = gen_id(Miogeneratore,1);
end!!
credo che sia abbastanza chiara.
Bye
AS

 dove trovi un mio articolo sull'argomento.
Grazie Alberto, sei molto gentile.
Il mio indirizzo e' 
miy...@hotmail.com
manda pure tutto quello che reputi importante sull'argomento.
Ciao!