D'abord, je suis au courant cette question et la suggestion (utiliser le GUID) ne s'applique pas à ma situation.
Je veux des UIDs simples pour que mes utilisateurs puissent facilement communiquer ces informations par téléphone :
Bonjour, j'ai un problème avec la commande 1584
à l'opposé de
Bonjour, j'ai un problème avec la commande. 4daz33-d4gerz384867-8234878-14
Je veux qu'ils soient uniques (à l'échelle de la base de données) parce que j'ai plusieurs types d'"objets" différents... il y a des ID de commande, des ID de livraison et des ID de facturation et, comme il n'y a pas de relation biunivoque entre eux, je n'ai aucun moyen de deviner à quel type d'objet un ID fait référence.
Grâce aux identifiants uniques de la base de données, je peux immédiatement savoir à quel objet mon client fait référence. Mon utilisateur peut simplement saisir un ID dans un outil de recherche et je lui évite de cliquer pour affiner sa recherche.
Mon idée actuelle est d'utiliser des colonnes d'identité avec des graines différentes 1, 2, 3, etc. et une valeur d'incrément de 100.
Cela soulève toutefois quelques questions :
-
Que se passera-t-il si je finis par avoir plus de 100 types d'objets ? Je pourrais utiliser 1000 ou 10000, mais quelque chose qui ne s'adapte pas bien "sent".
-
Est-il possible que la graine soit "perdue" (lors d'une réplication, d'un problème de base de données, etc.)
-
Plus généralement, y a-t-il d'autres problèmes dont je devrais être conscient ?
-
est-il possible d'utiliser une colonne non entière (j'utilise actuellement des bigints) comme colonne d'identité, de sorte que je puisse préfixer l'ID avec quelque chose représentant le type d'objet (par exemple une colonne varchar) ?
-
Est-ce que ce serait une bonne idée d'utiliser une "table maîtresse" contenant seulement une colonne d'identité, et peut-être le type d'objet, de sorte que je puisse simplement y insérer une ligne chaque fois que j'ai besoin d'une nouvelle idée. J'ai l'impression que c'est un peu exagéré, et je crains que cela ne complexifie toutes mes demandes d'insertion. De plus, je ne pourrais pas déterminer le type d'objet sans regarder la base de données.
-
existe-t-il d'autres moyens astucieux de résoudre mon problème ?