Se ho bisogno di un surrogato, vorrei utilizzare una colonna IDENTITY o una colonna GUID in base alla necessità di univocità globale.
Se esiste una chiave primaria naturale o la chiave primaria è definita come una combinazione univoca di altre chiavi esterne, in genere non ho IDENTITÀ, né la uso come chiave primaria.
Esiste un'eccezione, ovvero le tabelle di configurazione dello snapshot che sto monitorando con un trigger di controllo. In questo caso, di solito c'è una "chiave primaria" logica (solitamente la data dell'istantanea e la chiave naturale della riga - come un centro di costo o un numero di conto gl per cui la riga è un record di configurazione), ma invece di usare il naturale "chiave primaria" come chiave primaria, aggiungo un IDENTITÀ e ne faccio la chiave primaria e faccio un indice univoco o un vincolo sulla data e sulla chiave naturale. Anche se teoricamente la data e la chiave naturale non dovrebbero cambiare, in queste tabelle, se un utente lo fa invece di aggiungere una nuova riga ed eliminare la vecchia riga, voglio la verifica (che riflette una modifica a una riga identificata dalla sua chiave primaria) per riflettere davvero un cambiamento nella riga - non la scomparsa di una chiave e l'aspetto di una nuova.
fonte
2009-06-01 00:34:24
+1 - Mi piacciono le informazioni aggiuntive sui GUID per la distribuzione. Per esperienza, questo è esattamente il caso in cui potrebbe essere più semplice dell'uso di un tasto intero. –