mi piacerebbe spingere di nuovo la discussione sullo stesso thread chiamato.
Uso anche le chiavi primarie auto incrementali come chiavi esterne, principalmente per tabelle di codici. Ogni riga ha anche un codice per identificare le voci per gli utenti (come ProductKey). Tutto funziona bene finché ho bisogno di un periodo di validità per le voci nelle tabelle di codice.
es. ogni cliente ha un BusinessAdvisor:
Client BusinessAdvisor
Name BusinessAdvisorID ID Code Name StartDate
Company1 1 1 01 Schmidt 2017-04-01
Company2 4 2 02 Müller 2017-01-01
Company3 2 3 03 Schulze 2017-10-01
Company4 3 4 11 Meyer 2016-05-01
Company5 1 …
Company6 2 48 02 Becker 2018-04-01
Company7 2
Al 2018-04-01 Müller lascia l'azienda e Becker ottiene il codice "02" e quindi tutti i clienti di Müller.
Per la cronologia di BusinessAdvisor non è consentito modificare la voce con ID 2. Questa riga ha terminato con l'impostazione di una data di fine.
In questo caso è possibile stampare Müller come BusinessAdvisor in rapporti storici (prima del 2018-04-01). Rapporti / display / elaborazione attuali dovrebbero mostrare / usare Becker, ma questa voce, ovviamente, usa un altro ID.
La mia opinione è di risolvere questo problema con una modifica della progettazione del database ...
Altre idee ???
WTI