I PK a incremento automatico, interi o in altro modo, non sono intrinsecamente problematici. "La migliore pratica" per un PK è che non si rapporta agli attributi del mondo reale dell'oggetto. Il PK esiste per identificare univocamente un'entità nel caso in cui gli altri attributi cambino - anche gli attributi apparentemente permanenti, che sono soggetti a correzioni.
Il PK non dovrebbe "mai" aver bisogno di cambiare, salvo una revisione architettonica o la migrazione dei dati. Quindi, fintanto che il tuo PK si adatta a quel conto, non è "sbagliato" o "cattivo" per qualsiasi entità, intrinsecamente, reale o altro.
Detto questo, ci possono essere delle difficoltà quando si usa un PK autoincrementante. Vale a dire, l'unicità è più difficile da raggiungere tra gli host. Nel caso in cui i dati host A e B debbano combinare i loro pool user
, o l'evento che i nuovi dati ospitano da C a Z devono essere aggiunti, c'è una sfida abbastanza grande lì se non lo avevate già programmato. D'altra parte, se utilizzi UUID semi-casuali o qualcosa del genere, con macchine, datetime e componenti casuali, probabilmente stai eseguendo la migrazione, l'unione o l'aggiunta di host senza problemi.
Il vantaggio principale dei PK auto-incrementati è l'efficienza della ricerca. Un vantaggio che sta calando un po 'ogni anno, attenzione ...