Je sais que les touches primaires de substitution sont généralement recommandées sur des clés primaires naturelles, mais y a-t-il des arguments en faveur des clés primaires de substitution en matière de noms d'utilisateur? P>
5 Réponses :
du point de vue du client, vous pariez. Je ne veux pas que mon nom d'utilisateur soit dwong1145. p>
non fort>, vous devriez Utilisez nom d'utilisateur uniquement comme clé unique / constante forte>. Le nom d'utilisateur peut être changé, juste et exemple: il peut s'agir d'une marque de commerce et du propriétaire vous demande de le déposer. P>
Sonne un peu terse;) vous sont i> bien cependant. Je déteste les systèmes sur lesquels vous ne pouvez pas changer votre nom d'utilisateur - cependant, l'OP a dit dans les commentaires qu'il ne veut pas qu'il soit changé, alors ...
Si vous ne voulez pas obtenir des noms d'utilisateur en double, créez un Contrainte unique code>
. P>
Et si Dwong1145 code> veut changer son nom d'utilisateur? Voulez-vous effectuer toutes les relations de base de données pour être
mise à jour cascade code>? P>
Ma question se trouve dans le contexte d'un système d'authentification qui ne permettra pas de modifier le nom d'utilisateur. J'aurais dû mention que cela.
@Manuil - Pour citer Jeff Goldblum dans Jurasic Park, "La vie trouve un moyen." Si vous avez besoin de changer vos noms d'utilisateur un jour, vous pouvez regretter ce moment même en ce moment ...
" informations code> ne doit pas être utilisé comme clé;
data code> peut";
Data CODE> n'a pas besoin d'être modifié, comme si vous vouliez toujours être compris par un programme. Et si j'appelle si et demander à changer mon utilisateur id i>? Je ne peux pas faire ça, mais je peux changer mon utilisateur nom i>.
C'est un bon candidat en quelque sorte, mais vous devez considérer si vous voulez vraiment le faire. Par exemple, vous avez un utilisateur avec un certain nom d'utilisateur, puis l'utilisateur est "supprimé" (ou marqué comme supprimé). Donc, il n'ya donc aucune raison de ne pas permettre de créer un autre utilisateur avec le même nom d'utilisateur, mais il est déjà "pris", car c'est une clé primaire. P>
Un gros inconvénient d'avoir une chaîne comme clé primaire, que ce soit un nom d'utilisateur ou autre chose, c'est que toutes les colonnes de clé étrangères faisant référence à la table devront également être des chaînes, à la fois plus lentes et gaspillent davantage d'espace. < / p>
Il n'est pas nécessaire d'être plus lent. Bon moteur de base de données pourrait pré-hachaîner à toutes les valeurs de chaîne. En plus de cela, l'utilisation de clés naturelles éliminera probablement besoin de nombreuses jointures dans la demande, ce qui rend les requêtes plus rapidement. J'accepte que les clés naturelles consomment généralement plus d'espace mais honnêtement, l'espace est bon marché et abondant.