2010-09-14 4 views
0

J'ai une application Web où les utilisateurs peuvent se connecter et lire leurs messages. J'utilise la clé primaire ID dans la base de données pour accéder aux messages des utilisateurs via le site (viewmessage/3), mais je me suis vite rendu compte que je ne voulais pas le faire car cela donnait des informations à tous les utilisateurs potentiels. les messages sont stockés dans la base de données. Même idée avec les utilisateurs, pour voir un profil d'utilisateurs que j'utilise pour utiliser leur identifiant mais qui donne le nombre d'utilisateurs sur le site ... Donc ce que j'ai fait est d'ajouter une nouvelle colonne dans chaque table appelée UrlKey, cette clé est un varchar (16) qui est composé de 16 nombres uniques générés aléatoirement que j'utilise pour mapper à l'ID du côté serveur. Ma question maintenant, est 16 trop ou pratique courante (16^10), devrais-je utiliser seulement des int ou un mélange de caractères int et ascii, des recommandations de lignes directrices en termes de vitesse, de sécurité etc ...? Merci beaucoupbase de données unique urlkey au lieu de l'ID

Répondre

1

La plupart des bases de données utilisent un GUID ou le UUID pour une chaîne unique au lieu d'un ID incrémenté automatiquement. Ils peuvent tous deux être stockés sous la forme d'un entier de 16 octets mais de 32 caractères.

J'utiliserais un GUID ou un UUID. Alors vous allez toujours être unique.

+0

Je veux utiliser ce 'GUID' sur le site dans mon URL pour accéder à des zones spécifiques, le fait que ce soit 32 caractères .... pourrait devenir un problème? Vous venez de me faire réaliser que mon système n'est pas évolutif. J'ai une boucle qui génère une clé aléatoire si la clé actuelle existe déjà, donc je pourrais rester bloqué dans cette boucle pendant un certain temps si mon enregistrement devient extrêmement volumineux. – user391986

+0

@ user391986 Je ne vois pas comment 32 caractères sont un problème. Et pourquoi rouler votre propre identifiant unique quand il a été fait pour vous. Chaque plate-forme majeure aurait une méthode pour générer un GUID ou un UUID. –

1

16^10 est un nombre énorme, c'est plus de 1 billion de messages. Si vous utilisez des majuscules et des minuscules, cela vous donne 62 caractères, et avec 5 caractères vous avez déjà 62^5 combinaisons, c'est presque 1 milliard de combinaisons.

+0

J'ai d'abord utilisé un mix mais je pensais que cela pouvait poser des problèmes de sécurité si le code était injecté ou alors, je ne sais pas assez, donc j'ai décidé de le jouer en sécurité et de ne permettre que des numéros. – user391986

Questions connexes