Une exigence est que lorsque je persiste mes objets C# dans la base de données, je dois déterminer l'ID de la base de données (clé primaire de substitution) dans le code.Génération d'ID de base de données uniques dans le code
La deuxième exigence est que le type de base de données pour la clé doit être int ou char (x) ... donc pas d'identificateur unique ou binaire (16) ou similaire.
Ce sont des exigences inchangeables.
Quelle serait la meilleure façon de gérer cela?
Une idée est les GUID codés en base64 ressemblant à "XSiZtdXcKU68QWe7N96Dig". Ceux-ci sont facilement créés dans le code et sont acceptables dans les URL si nécessaire. Mais sera-t-il trop cher en ce qui concerne les performances (indexation, taille), toutes les clés primaires et étrangères étant char (22)? En dehors de la main, j'aime vraiment cette idée.
Une autre idée serait de créer une version de code d'une séquence de base de données en créant des entiers incrémentés pour moi. Mais je ne sais pas si cela est plausible et aurait besoin de conseils pour assurer la fiabilité. Le séquenceur doit savoir har loin il est venu et qu'en est-il des threads que je ne contrôle pas
J'imagine qu'aucune table impliquée dépassera jamais 1.000.000 lignes ... sera probablement beaucoup moins.
Cela n'a vraiment aucun sens - c'est vraiment le travail de la base de données, pourquoi essayer de déplacer cela vers le code client? Tout code client sera sujet aux erreurs (doublons possibles) - seule la base de données peut réellement garantir l'unicité –
Puis-je vous demander de clarifier pourquoi l'exigence est de décider de l'identifiant unique dans le code? Neuf fois sur dix, j'ai trouvé que la solution à ce problème consistait à contourner cette exigence et à laisser la base de données faire son travail. –
Je connais toutes les discussions et n'ai aucune envie de justifier :). Je pose une question basée sur les exigences immuables mentionnées pour répondre s'il vous plaît en conséquence. – lox