Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    23

    Salvataggio modifiche a Db

    Buongiorno a tutti

    chiedo a voi la soluzione ottimale (per quanto sia possibile) di un problema.

    Sto creando un applicazione gestionale collegata a un Db PostgreSql al cui interno c'è un'anagrafica clienti con i classici dati, cognome, nome, data e luogo nascita ecc.

    Il mio problema è quello di dover tener traccia delle modifiche che avvengono sui dati anagrafici di una persona, e cercando una soluzione nella mia mente ma anche su google ho trovato alcune soluzioni ma non riesco a capire quale sia quella ottimale o se quella ottimale è un'altra rispetto a quelle che ho trovato.

    Soluzione 1 (Trovata in giro per il web)

    Gestione dei dati anagrafici con delle versioni come si fa con i software, assegnando alla persona 2 id, uno che la identifica e il secondo che identifica la versione dei sui dati.

    es. Primo inserimento

    id 1 id_versione 1 cognome Rossi nome Mario residenza Milano

    quando avviene la modifica per es. della residenza si inserisce un nuovo record con un nuovo id_versione

    id 1 id_versione 2 cognome Rossi nome Mario residenza Roma

    Questo metodo è semplice ma ha l'inconveniente della ripetizione anche di tutti quei dati che non vengono cambiati e della mancanza dell'incremento automatico dell'id.

    Soluzione 2 (pensata da me per limitare gli inconvenienti della soluzione 1)

    Per diminuire la duplicazione dei dati con la soluzione 1 in caso di modifiche, si potrebbe dividere la tabella Persona in molte tabelle (es. una solo per il nome e cognome, una per data e luogo nascita, una solo per la residenza, una solo con i contatti) e usare sempre il sistema di versione della soluzione sopra.
    In questo modo se viene modificata solo la residenza avrò un record in più solo nella tabella residenza e nelle altre non avrò inutile duplicazione dei dati.

    Questa soluzione però complica abbastanza la gestione del db e mi costringe a controllare tramite codice la modifica di tutti i singoli dati di una persona per controllare quali sono stati cambiati e in quale tabella salvare i nuovi dati, oltretutto sempre con la mancanza dell'incremento automatico degli id.

    Soluzione 3 (sempre pensata da me)

    Per evitare la duplicazione dei dati e il complicarsi della struttura del Db, ho pensato di tenere la tabella persona unita e salvare solo i dati che vengono modificati, qundi sempre dovendo controllare per ogni singolo dato se è stato cambiato o no, piuttosto che nel Db su un file esterno(txt/csv/ecc.).

    Questo sistema l'ho pensato ma preferirei evitarlo, preferirei tenere tutto nel Db, se c'è una buona soluzione.

    Scusate per la pedanteria ma è una giornata che ci penso.

    Grazie mille

  2. #2
    non ti basta tenere un log delle modifiche?

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    23
    Intendi un log fatto con un trigger?

    Come la struttureresti la tabella di log?

    A me interessa il salvataggio dei vecchi dati e dei nuovi dati in modo da sapere cosa e come è stato modificato...Grazie

  4. #4
    potresti semplicemente usare la stessa struttura della tabella che vuoi monitorare, con in più un progressivo, la data di modifica e la sigla dell'utente che ha fatto la modifica. più facile di così...


  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    23
    Quindi più o meno la soluzione n. 1 che davo nel primo post?

    Da quello che ho capito, l'unica differenza rispetto a quello che ho scritto io è quello di mettere le modifiche in una seconda tabella piuttosto che nella stessa...giusto?

    Ma nella seconda tabella riscriveresti tutto il record (quindi anche con eventuali ripetizioni di campi che non sono stati modificati)...o solo un record con i campi modificati lasciando quelli non modificati null???

  6. #6
    questo dipende da quello che vuoi fare tu. Puoi

    1. salvare tutto
    2. salvare solo i campi modificati
    3. salvare tutto e segnare in un'ulteriore colonna quali campi hai modificato

    ripeto, dipende da quello che devi fare

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    23
    Secondo te il migliore dei 3?

    Cmq a me interessa tenere uno storico dei cambiamenti dei dati della persona.

  8. #8
    io sceglierei la 1, poi un piccolo prg di confronto/ripristino

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    23
    Grazie mille!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.