J'ai étudié l'utilisation des GUID comme clés primaires dans les bases de données. Jusqu'à présent, les avantages semblent l'emporter sur les inconvénients. Cependant, je vois un point où les GUID peuvent ne pas être ce que je veux.Utilisation d'un GUID et d'un entier auto-incrémenté
Dans mon application, les utilisateurs doivent pouvoir identifier les objets en fonction d'un ID convivial. Ainsi, par exemple, s'ils veulent obtenir un produit spécifique sans entrer le nom complet, ils peuvent utiliser l'ID du produit. Les GUID ne sont pas faciles à retenir pour quelque chose comme ça.
La solution à laquelle j'ai pensé est d'utiliser à la fois un GUID et un entier auto-incrémenté. Le GUID serait la clé primaire de la ligne, tandis que l'entier auto-incrémenté serait un index utilisé par les fonctions de filtrage de l'application. Cependant, toutes les instructions SQL SELECT, UPDATE, DELETE utiliseront le GUID. La principale raison pour laquelle je souhaite utiliser les GUID est d'éviter les conflits lors de la fusion de deux bases de données. Si la base de données # 1 et la base de données # 2 ont toutes deux un produit # 2, le script de l'importateur devrait changer l'ID et toutes les clés étrangères qui s'y réfèrent. Avec les GUID, je n'ai qu'à modifier l'ID convivial dans la table elle-même, alors que les clés étrangères utiliseraient le GUID unique à chaque enregistrement importé et fonctionneraient donc sans modification. Donc, ma question est la suivante: existe-t-il des problèmes majeurs (outre la taille du champ GUID et la fragmentation facile des pages) avec un index d'entier auto-incrémenté et une clé primaire GUID?
Désolé, j'ai oublié de mentionner que j'utilise SQL Server 2008. –