Au niveau logique , l'e-mail est la clé naturelle. Au physique niveau , étant donné que vous utilisez une base de données relationnelle, la clé naturelle ne correspond pas bien à la clé primaire. La raison en est principalement les problèmes de performance mentionnés par d'autres.
Pour cette raison, le design peut être adapté. La clé naturelle devient la clé alternative (UNIQUE, NOT NULL), et vous utilisez une clé de substitution / artificielle / technique comme clé primaire, qui peut être une incrémentation automatique dans votre cas.
a demandé systempuntoout,
Et si quelqu'un veut changer son adresse e-mail? Allez-vous également changer toutes les clés étrangères?
C'est ce que cascade sert la .
Une autre raison d'utiliser une clé de substitution numérique comme clé primaire est liée au fonctionnement de l'indexation dans votre plateforme. Dans InnoDB de MySQL, par exemple, tous les index d'une table ont la clé primaire pré-suspendue, donc vous voulez que le PK soit aussi petit que possible (pour des raisons de vitesse et de taille). Également lié à cela, InnoDB est plus rapide lorsque la clé primaire est stockée dans l'ordre, et une chaîne n'y aiderait pas.
Une autre chose à prendre en considération lors de l'utilisation d'une chaîne comme clé alternative est que l'utilisation d'un hachage de la chaîne réelle que vous souhaitez peut être plus rapide, en sautant des choses comme les majuscules et les minuscules de certaines lettres. (J'ai en fait atterri ici en cherchant une référence pour confirmer ce que je viens de dire; toujours à la recherche ...)