No hay nada intrínsecamente incorrecto con el uso de Autonumérico, pero hay algunas razones para no hacerlo. Aún así, lanzar tu propia solución no es la mejor idea, como mencionó Dacracot. Dejame explicar.
La primera razón para no usar Autonumérico en cada tabla es que puede terminar fusionando registros de varias tablas. Supongamos que tiene una tabla de pedidos de venta y otro tipo de tabla de pedidos, y decide extraer algunos datos comunes y utilizar la herencia de tablas múltiples. Es bueno tener claves primarias que son globalmente únicas. Esto es similar a lo que dijo bobwienholt sobre la fusión de bases de datos, pero puede ocurrir dentro de una base de datos.
En segundo lugar, otras bases de datos no usan este paradigma, y otros paradigmas como las secuencias de Oracle son mucho mejores. Afortunadamente, es posible imitar secuencias de Oracle utilizando SQL Server. Una forma de hacerlo es crear una sola tabla Autonumérico para toda su base de datos, llamada MainSequence, o lo que sea. Ninguna otra tabla en la base de datos usará el autonumber, pero cualquiera que necesite una clave primaria generada automáticamente usará MainSequence para obtenerla. De esta forma, obtienes todo el rendimiento, bloqueo, seguridad de hilos, etc. de los que dacracot estaba hablando sin tener que construirlo tú mismo.
Otra opción es usar GUID para claves primarias, pero no lo recomiendo porque incluso si está seguro de que un ser humano (incluso un desarrollador) nunca va a leerlos, probablemente alguien lo haga, y es difícil. Y, lo que es más importante, las cosas se convierten implícitamente en ints muy fácilmente en T-SQL pero pueden tener un montón de problemas al convertir implícitamente a un GUID. Básicamente, son inconvenientes.
Al construir un nuevo sistema, recomendaría usar una tabla dedicada para la generación de claves primarias (al igual que las secuencias de Oracle). Para una base de datos existente, no me desviaría de mi camino para cambiarlo.
¿Puedes dar un ejemplo de replicación? ¿No podemos usar la inserción de identidad para la identificación autogenerada mientras se replica? – ivorykoder
@ivorykoder Si dos bases de datos generan una nueva fila (y por lo tanto una nueva ID) y luego intentan sincronizar, habrá un conflicto ya que dos filas diferentes en la tabla tendrán PK diferentes. Si usa GUID, prácticamente se garantiza que los PK serán únicos. – Matthew