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