Est-il possible d'utiliser les valeurs de caractères pour les clés primaires?

Est-il un gain de performance ou de meilleure pratique quand il s'agit de l'aide unique, IDENTIFIANT numérique des champs dans une table de base de données par rapport à l'utilisation des personnages?

Par exemple, si j'avais deux tables:

athlète

id ... 17, nom ... Rickey Henderson, teamid ... 28

équipe

teamid ... 28, teamname ... Oakland

L'athlète de la table, avec des milliers de joueurs, serait plus facile à lire si l' teamid était, disons, "CHÊNE" ou "SD" au lieu de "28" ou "31". Prenons pour acquis la teamid valeurs restent propres et cohérente dans le formulaire de caractère.

Je sais que vous POUVEZ utiliser des caractères, mais est-ce une mauvaise idée pour l'indexation, filtrage, etc pour n'importe quelle raison?

S'il vous plaît ignorer la normalisation argument que ces tableaux sont plus complexes que l'exemple.

synthétique vs naturel argument clé resucée, également dupliquer des stackoverflow.com/questions/144109/... voir aussi stackoverflow.com/search?q=synthetic touche+
Il est intéressant de noter que vous parlez des champs de caractère, pas MSSQL du "texte" type de, ce qui je crois est non-indexable.

OriginalL'auteur Randy Burgess | 2009-01-15