He estado investigando el uso de GUID como claves principales en las bases de datos. Hasta ahora, los profesionales parecen superar los inconvenientes. Sin embargo, veo un punto en el que los GUID pueden no ser lo que quiero.Uso de un GUID y un entero de incremento automático
En mi aplicación, los usuarios deberían ser capaces de identificar objetos basados en una identificación fácil de usar. Entonces, por ejemplo, si quieren obtener un producto específico sin escribir el nombre completo, pueden usar la identificación del producto. Los GUID no son fáciles de recordar por algo así.
La solución en la que he estado pensando es utilizar tanto un GUID como un entero de incremento automático. El GUID sería la clave primaria de la fila, mientras que el entero de incremento automático sería un índice utilizado por las funciones de filtrado de la aplicación. Sin embargo, todas las sentencias SQL SELECT, UPDATE, DELETE usarían el GUID.
La razón principal por la que deseo utilizar los GUID es para evitar conflictos al fusionar dos bases de datos. Si la Base de datos n. ° 1 y la Base de datos n. ° 2 tienen un Producto n. ° 2, la secuencia de comandos del importador debería cambiar la Id. Y todas las claves foráneas que se refieren a ella. Con los GUID, solo tengo que cambiar el ID fácil de usar en la tabla, mientras que las claves externas usarían el GUID exclusivo para cada registro importado y, por lo tanto, funcionarán sin modificaciones.
Entonces, mi pregunta es: ¿hay algún problema importante (además del tamaño del campo GUID y la fragmentación de página fácil) con un índice entero autoincrementable y una clave principal GUID?
Lo siento, olvidé mencionar que estoy usando SQL Server 2008. –