Mysql
 sql >> Base de données >  >> RDS >> Mysql

L'utilisation de char comme clé primaire/étrangère n'est-elle pas non ?

La performance n'est pas vraiment le problème principal, du moins pas pour moi. Le problème concerne davantage les clés de substitution que les clés naturelles.

Les codes de pays ne sont pas statiques. Ils peuvent changer et changent. Les pays changent de nom (par exemple, l'Éthiopie devient l'Érythrée). Ils apparaissent (par exemple, l'éclatement de la Yougoslavie ou de l'Union soviétique) et ils cessent d'exister (par exemple, l'Allemagne de l'Ouest et de l'Est). Lorsque cela se produit, le code standard ISO change.

Plus d'informations dans Changements de nom depuis 1990 :pays, villes et plus

Les clés de substitution ont tendance à être meilleures car lorsque ces événements se produisent, les clés ne changent pas, seules les colonnes de la table de référence le font.

Pour cette raison, je serais plus enclin à créer des tables de pays et de devises avec une clé primaire int à la place.

Cela étant dit, les champs de clé varchar utiliseront plus d'espace et présenteront certains inconvénients en termes de performances qui ne seront probablement pas un problème, sauf si vous effectuez un grand nombre de requêtes.

Pour être complet, vous pouvez vous référer à Erreurs de développement de base de données commises par les développeurs d'applications .