Newsgroup: it.comp.appl.access
Titolo: Modifica di valori nella tabella padre e vincolo di integrità referenziale.

Salve e buona domenica a tutti.
Volevo un parere un attimo riguardo alla modifica di record che possiedono record correlati.
Sul mio db ho impostato, su tutte le tabelle importanti (praticamente quelle che contengono i dati 
che contano), il vincolo di integrità referenziale.
Ho spuntato l'opzione "aggiorna i campi a catena" (molto comoda in caso di modifiche manuali ai 
campi master) mentre ho rinunciato a "elimina i record a catena" in quanto (scelta sicuramente 
discutibile) ho ritenuto questa una sicurezza in più in caso di eliminazioni (difatti in caso di 
eliminazione, questa viene vietata dal lato master finchè vi saranno record correlati).
Attualmente (scelta moooolto discutibile) per modificare un record master
1 creo un nuovo record con il nuovo valore
2 modifico il lato correlato con il nuovo valore
3 elimino il vecchio record master
Volevo passare alla modifica diretta del lato master (tanto per il lato correlato c'è l'integrità 
referenziale),e volevo sapere qual'era la tendenza vostra (risparmiatevi le battute) riguardo a 
quello che ho descritto sopra. Nel senso, sfruttare l'integrità referenziale con il vincolo 
dell'aggiornamento è un dovere e una sicurezza, o è meglio il mio modo di procedere?
Saluti
---------------------------
Michele (Giò)
joyl...@alice.it
 

 mio modo di procedere?
Se lavori con Access come BE, non conoscendo io Jet in maniera approfondita 
non so dirti come esso implementi i costrutti DML.
Se lavori invece con SQL Server come BE, allora puoi evitare questa procedura, 
in quanto, come ho detto poco sopra, esiste già in maniera nativa.
Se analizziamo invece la tua soluzione come il mezzo per realizzare un sistema 
di log + recover, allora a parer mio potrebbe essere comunque qualcosa di 
molto valido.
--
PBsoft di Gabriele Bertolucci
www.pbsoft.it
skype:pbsoftsolution

 ha scritto nel messaggio
news:45a0d036$0$19096$4faf...@reader4.news.tin.it...

Imposto un vincolo d'intregità referenziale ogni volta che posso e imposto
normalmente l'opzione elimina record a catena. Sarò un po' sconsiderato, ma
penso che si debba mettere un limite al proliferare delle procedure :)
Modifica diretta in ogni circostanza. In ogni caso, c'è il warning di
sistema che avvisa dell'eliminazione dei recors correlati.
Ciao :)
eSQueL

 delle procedure :)
Io uso una via di mezzo. Imposto l'integrità referenziale ovunque posso, 
ma imposto la cancellazione a catena solo in pochissimi casi.
Tuttavia, difficilmente gestisco tramite procedura l'eliminazione di record 
a catena, demandando all'utente questa operazione manuale. In questo modo 
sfido il cliente a dirmi che ha cancellato (ad esempio) una fattura senza 
accorgersene o senza leggere l'eventuale messaggio di warning: deve necessariamente 
cancellare prima i dettagli e poi la fattura.
Si tratta comunque di scelte politiche non certo di migliore funzionalità.


 molto valido.
Rispondo a tutti e due in un post solo.
Intanto grazie per la vostra opinione.
In effetti me lo immaginavo pure io che il meccanismo interno del db fosse una cosa simile a quella 
che faccio io. La cosa che cambia è che monitorando io la procedura (con il mio sistema) posso 
effetturare una gestione degli errori alquanto efficace, mentre in caso di errore interno del motore 
jet, sarei un pò impreparato perchè non conosco la bestia.
Stiamo comunque parlando di particolari, in questo caso.
Sono d'accordo ivece con PBsoft riguardo al non utilizzo della cancellazione a catena per una 
maggiore sicurezza da cancellazioni selvaggie o per errore, anche se giustamente il warning di 
sistema è sempre pronto.
Io tuttavia le cancellazioni del mio dble gestisco tutte tramite DAO e a mezzo di inputbox e 
messaggi di conferma.
Michele 

 a mezzo di inputbox e messaggi di conferma.
Una scelta tanto coraggiosa quanto noiosa da implementare.
Magari si potrebbe gestire meglio il tutto con delle classi, ma non ho mai 
analizzato questo problema.


 problema.
Oddio, le cancellazioni di cui necessita l'utente che usa il mio db mi stanno in una mano.
Una volta scritte e collaudate le funzioni di base, alla fine usi sempre quelle....
Forse tutte queste mie soluzioni esoteriche, sono proprio dovute al fatto, come mi diceva Alex 
Baraldi l'altro giorno, che non conosco bene il mezzo, e man mano che lo conosco, elimino tutte le 
cose obsolete.
Per il momento, leggendo i vostri discorsi, resto fermo sul mio sistema.
Michele