Originariamente inviato da alpynet
Ciao a tutti, volevo chiedere un consiglio/parere per quanto riguarda la progettazione di un database per un gestionale (ipotizziamo tabella clienti e fatture).
Fino ad oggi, in tutti quei applicativi che richiedevano una tabella anagrafica, ho sempre collegato tutte le altre tabelle (dove richiesto), con l'ID relativo alla persona inserita in anagrafica, ma questo modo di operare non mi convince troppo, in quanto:
- se la persona cambia indirizzo, questo in automatico si riflette in tutte le righe con il suo ID, di conseguenza se vado a ristampare una vecchia fattura, mi esce con il nuovo indirizzo e questo non va bene.
Per questo motivo ho pensato che sarebbe meglio trasportare tutti i dati anagrafici (prelevandoli dalla tabella anagrafica) in ogni tabella che richiede l'anagrafica, ma a questo punto nasce un'altro dubbio: se dopo qualche mese mi accorgo che ho sbagliato a inserire i dati anagrafici di una persona, non mi basta correggere la tabella anagrafica, ma devo fare un update anche a tutte le tabelle interessate, non è che sia il massimo...
Da queste riflessioni ho pensato che l'ottimale sarebbe creare una tabella ANAGRAFICA contenente solo i dati che non cambiano mai (cognome, nome, data nascita, codice fiscale), e una tabella INDIRIZZI contentente i dati che nel tempo possono cambiare (città, indirizzo ecc..) e aggiungere un campo data FINE_VALIDITA. In pratica nella tabella INDIRIZZI, aggiungere una riga ogni volta che cambia qualche dato. In questo modo, quando richiamo una fattura vecchia, in base alla data di fattura, si prende l'indirizzo giusto.
Cosa ne pensate, potrebbe andare bene? Avete qualche consiglio o accorgimento diverso da suggerirmi?
Grazie